wiki/运维/日志/Elasticsearch/部署三节点elasticsearch.md
2025-01-02 10:46:09 +08:00

6.2 KiB
Raw Blame History

三节点搭建Elasticsearch

一、环境

三台服务器2C4Gubuntu22.04elasticsearch 8.14kibana 8.14

二、实操

#!/bin/bash

echo "由于脚本是在windows的vscode下写的所以需要安装dos2unix进行转换"
echo "try dos2unix filename"
read -p "什么?你已经执行过了?【y/n】" windows2unix
if [ $windows2unix = 'y' ]
then
    echo "牛逼"
else
    echo "滚回去执行!"
    exit
fi

echo "脚本有1个参数主节点参数为1从节点参数为2 or 3比如./createES.sh 1"
read -p "什么你带参数了【y/n】" pram
if [ $# -ne 0 -a "$pram" = 'y' ]
then
    echo "你真牛逼"
else
    echo "给爷重新执行"
    exit
fi
esnodetoke=""
echo -e "\033[41;33m Download and install the public signing key ing \033[0m"
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo -e "\033[41;33m Download and install the public signing key done \033[0m"
echo -e "\033[41;33m install apt-transport-https \033[0m"
apt-get install apt-transport-https >> ./installES.log
echo -e "\033[41;33m install apt-transport-https done \033[0m"
echo -e "\033[41;33m Save the repository \033[0m"
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
echo -e "\033[41;33m Save the repository done \033[0m"
echo -e "\033[41;33m install elasticsearch ing... \033[0m"
apt-get update >> ./installES.log && sudo apt-get install elasticsearch >> ./installES.log
echo -e "\033[41;33m install elasticsearch done \033[0m"
if [ ! $1 ]
then
    echo -e "\033[41;33m erro,please input 1 or 2 or 3 \033[0m"
    exit
elif [ $1 -eq 2 ]
then
    read -p "请输入esnodetoken" esnodetoken
    echo -e "\033[41;33m 2节点开始加入集群 \033[0m"
    /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token $esnodetoken >> ./installES.log
    echo -e "\033[41;33m 加入集群成功 \033[0m"
    echo -e "\033[41;33m 2节点开始修改配置 \033[0m"
    sed -i 's/#cluster.name: my-application/cluster.name: my-es/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 修改集群名称success \033[0m"
    sed -i 's/#node.name: node-1/node.name: es-2/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 修改节点名称success \033[0m"
    echo -e "\033[41;33m 修改2节点监听配置 \033[0m"
    sed -i 's/#network.host: 192.168.0.1/network.host: 0.0.0.0/g' /etc/elasticsearch/elasticsearch.yml 
    echo -e "\033[41;33m 修改2节点监听配置success \033[0m"
    echo -e "\033[41;33m 启动2节点ES \033[0m"
    systemctl start elasticsearch.service
    echo -e "\033[41;33m 启动完成 \033[0m"
elif [ $1 -eq 3 ]
then
    read -p "请输入esnodetoken" esnodetoken
    echo -e "\033[41;33m 3节点开始加入集群 \033[0m"
    /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token $esnodetoken >> ./installES.log
    echo -e "\033[41;33m 加入集群成功 \033[0m"
    echo -e "\033[41;33m 3节点开始修改集群名称 \033[0m"
    sed -i 's/#cluster.name: my-application/cluster.name: my-es/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 修改集群名称success \033[0m"
    echo -e "\033[41;33m 3节点开始修改节点名称 \033[0m"
    sed -i 's/#node.name: node-1/node.name: es-3/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 3节点修改节点名称succes \033[0m"
    echo -e "\033[41;33m 修改3节点监听配置 \033[0m"
    sed -i 's/#network.host: 192.168.0.1/network.host: 0.0.0.0/g' /etc/elasticsearch/elasticsearch.yml 
    echo -e "\033[41;33m 修改3节点监听配置success \033[0m"
    echo -e "\033[41;33m 启动3节点ES \033[0m"
    systemctl start elasticsearch.service
    echo -e "\033[41;33m 启动完成 \033[0m"
elif [ $1 -eq 1 ]
then
    echo -e "\033[41;33m 主节点开始修改配置 \033[0m"
    sed -i 's/#cluster.name: my-application/cluster.name: my-es/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 修改集群名称success \033[0m"
    echo -e "\033[41;33m 开始修改节点名称success \033[0m"
    sed -i 's/#node.name: node-1/node.name: es-1/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 修改节点名称success \033[0m"
    sed -i 's/^\(cluster.initial_master_nodes:.*\)/cluster.initial_master_nodes: \[\"es-1\"\]/g' /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m 修改主节点master配置success \033[0m"
    echo -e "\033[41;33m 修改主节点监听配置 \033[0m"
    sed -i 's/#network.host: 192.168.0.1/network.host: 0.0.0.0/g' /etc/elasticsearch/elasticsearch.yml 
    echo -e "\033[41;33m 修改主节点监听配置success \033[0m"
    node1IP=$(ip a | awk '/inet / {print $2}' | awk -F / 'NR==2 {print $1}')
    read -p "请输入2节点IP、3节点IP" node2IP node3IP
    sed -i  "s/#discovery.seed_hosts: \[\"host1\", \"host2\"\]/discovery.seed_hosts: \[\"$node1IP\", \"$node2IP\", \"$node3IP\"\]/g" /etc/elasticsearch/elasticsearch.yml
    echo -e "\033[41;33m seed_hosts success \033[0m"
    echo -e "\033[41;33m 启动主节点ES \033[0m"
    systemctl start elasticsearch.service
    echo -e "\033[41;33m 启动完成 \033[0m"
    echo -e "\033[41;33m 主节点开始生成加入节点密码 \033[0m"
    /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node > ./esnodetoken
    echo -e "\033[41;33m 请查看esnodetoken文件获取加入节点密码 \033[0m"
    echo -e "\033[41;33m 主节点安装成功 \033[0m"
    echo -e "\033[41;33m 等待其他节点加入... \033[0m"
    ELASTIC_PASSWORD=(awk -F ' ' '/The generated password for the elastic built-in superuser is : / {print $11}' installES.log)
    echo $ELASTIC_PASSWORD > ./ELASTIC_PASSWORD
    while
    do  
        nodes=$(curl --silent --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200/_cat/nodes?v | wc -l)
        if [ $nodes -eq 2 ]
        then
            echo -ne "wait 2 nodes join...\r"
        elif [ $nodes -eq 3 ]
        then
            echo -ne "wait 1 node join...\r"
        elif [ $nodes -eq 4 ]
        then
            echo "三个节点全部检测到啦"
        fi
        sleep 1
fi