Centos7一键部署Kibana7.16.1脚本

#!/bin/bash
install_es(){

#配置信息
HOSTNAME=`hostname`
#所有节点
NODE_1=node-1
NODE_2=node-2
NODE_3=node-3
NODE_1_IP=10.0.0.21
NODE_2_IP=10.0.0.22
NODE_3_IP=10.0.0.23
#启动用户密码es_user
ES_USER_PASSWORD=123

cd /etc
    cat > sysctl.conf <> 00-system.conf < limits.conf < elasticsearch.yml << EOF
#node-1配置文件
# 集群名称
cluster.name: my-application
# 集群节点名称
node.name: ${HOSTNAME}
# ES默认 只允许本地 127.0.0.1 和[::1] 访问
# 也可以设置成0.0.0.0 允许所有IP主机访问
# 如果不配置就默认认为是开发者模式,如果配置不正确会写入警告但是能正确运行
# 如果配置了就会认为进入了生产环境, 如果配置不正确就会升级为异常,ES无法正确启动。
network.host: 0.0.0.0
# 默认ES节点端口9200,如果是伪集群(在一台服务器上搭建集群),需要修改。
http.port: 9200
# 设置数据存放路径,建议修改这个路径到ES的安装文件夹外面,避免ES升级误删掉这个文件夹
path.data: /data/modules/es/data/
# 设置日志存放路径,建议修改这个路径到ES的安装文件夹外面,避免ES升级误删掉这个文件夹
path.logs: /data/modules/es/log/
# 发现其他节点主机配置 这里配置的是ES所在服务器的公网IP地址
discovery.seed_hosts: ["${NODE_1_IP}:9300","${NODE_2_IP}:9300","${NODE_3_IP}:9300"]
# 哪些节点可以被选举为主节点配置
cluster.initial_master_nodes: ["${NODE_1}", "${NODE_2}","${NODE_3}"]
EOF

#配置内置JAVA
cd /data/modules/es/bin
cat >> elasticsearch << EOF
export JAVA_HOME=/data/modules/es/jdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
sleep 1s
# 授予执行权限,modules文件夹权限授权给es_user 用户
chmod u+x  /data/modules/es/bin
chown -R es_user:es_user /data/modules/es
# 将ES数据存储文件夹权限授权给es_user用户
mkdir -p /data/modules/es/data
chown -R es_user /data/modules/es/data
# 将ES 日志存储文件夹权限授权给es_user用户
mkdir -p /data/modules/es/log/
chown -R es_user /data/modules/es/log/

#端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent;
firewall-cmd --zone=public --add-port=9300/tcp --permanent;
firewall-cmd --zone=public --add-service=http --permanent;
firewall-cmd --zone=public --add-service=https --permanent;
firewall-cmd --reload;
firewall-cmd --list-all;

#注册服务项
cd /usr/lib/systemd/system/
cat > es.service << "EOF"
[Unit]
Description=es
After=network.target

[Service]
Type=simple
User=es_user
ExecStart=/data/modules/es/bin/elasticsearch
LimitMEMLOCK=infinity
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable es.service
systemctl start es.service
systemctl status es.service
#手动启动
#.bin/elasticsearch -d -p pid 
}
install_es



docker_kibana(){

#配置信息
HOSTNAME=`hostname`
#所有节点
sudo yum install net-tools -y
IP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"|grep "10."`
NODE_1=node-1
NODE_2=node-2
NODE_3=node-3
MASTER_1_IP=10.0.0.11
NODE_1_IP=10.0.0.21
NODE_2_IP=10.0.0.22
NODE_3_IP=10.0.0.23
#启动用户密码es_user
ES_USER_PASSWORD=123

cat > docker-compose.yml << EOF
version: '3'
services:
  elasticsearch:                    # 服务名称
    image: elasticsearch:7.16.1      # 使用的镜像
    container_name: elasticsearch   # 容器名称
    restart: always                 # 失败自动重启策略
    environment:                                    
      - node.name=${HOSTNAME}                   # 节点名称,集群模式下每个节点名称唯一
      - network.publish_host=${IP}  # 用于集群内各机器间通信,其他机器访问本机器的es服务
      - network.host=0.0.0.0     # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0
      # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
      - discovery.seed_hosts=${NODE_1_IP},${NODE_2_IP},${NODE_3_IP}        
      # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
      - cluster.initial_master_nodes=${NODE_1_IP},${NODE_2_IP},${NODE_3_IP} 
      - cluster.name=es-cluster     # 集群名称,相同名称为一个集群
      - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    # 设置内存
    ulimits:             
      memlock:
        soft: -1      
        hard: -1
    volumes:
      - /data/modules/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
      - esdata:/usr/share/elasticsearch/data  # 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
    ports:
      - 9200:9200    # http端口
      - 9300:9300    # es节点直接交互的端口,非http
volumes:
  esdata:
    driver: local    # 会生成一个对应的目录和文件,如何查看,下面有说明。
EOF
}
docker_kibana

你可能感兴趣的:(shell)