6.2 KiB
6.2 KiB
三节点搭建Elasticsearch
一、环境
三台服务器2C4G,ubuntu22.04,elasticsearch 8.14,kibana 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