Shell 스 크 립 트 자동화 ElasticSearch 클 러 스 터 구축

25365 단어 ElasticSearch#Shell-
/머리말/
       이 스 크 립 트 는 7 대 호스트 이하 의 클 러 스 터 에 적용 되 며, 클 러 스 터 가 노드 를 위 한 맞 춤 형 설정 이 필요 하 다 면 ip 판단 에 따라 노드 의 속성 을 수정 할 수 있 습 니 다.       Elastic Search 클 러 스 터 구축 절 차 를 알 고 싶 으 시 면 제 다른 박문 Elastic Search 클 러 스 터 구축 그림 분석 을 보 세 요.       ElasticSearch 시작 흔 한 이상 및 해결 방안 에 대해 알 고 싶 으 시 면 제 다른 블 로그 ElasticSearch 흔 한 시작 이상 및 해결 방안 을 보십시오.
/자동화 셸 스 크 립 트/
# !/bin/bash

# es集群节点名称
NAME_LIST=(
node-1
node-2
node-3
)

# es集群IP地址
IP_LIST=(
192.168.0.1
192.168.0.2
192.168.0.3
)

unicast_hosts="[\"192.168.0.1:9310\",\"192.168.0.2:9310\",\"192.168.0.3:9310\"]"
initial_hosts="[\"192.168.0.1\",\"192.168.0.2\",\"192.168.0.3\"]"


# 创建es启动用户
function add_user(){

echo "请注意,在创建用户时会先对该用户进行删除操作以确保脚本运行成功, 如已有该用户请慎重输入用户名!"
read -p "继续请输入 1 ,停止请输入 2. : " IS_CONTINUE
if [ ${IS_CONTINUE} -ne 1 ]; then
  echo "停止运行该脚本!"
fi

read -p "请输入新增用户用户名 : " username

read -p "请输入新增用户密码 : " password

echo -e "
"
for ((i=0;i<${#IP_LIST[*]};i++)) do echo "正在为${IP_LIST[i]}机器添加用户, 请输入该机器的root密码" ssh -Tq ${IP_LIST[i]} <<ADDEOF userdel -r ${username} echo "userdel -r ${username}" useradd -d /home/${username} ${username} expect -c" spawn passwd ${username} expect { \"*yes/no*\" {send \"yes\r\";exp_continue} \"*New password:*\" {send \"${password}\r\";exp_continue} \"*Retype new password:*\" {send \"${password}\r\";exp_continue} }" exit ADDEOF echo -e "
"
done } # 创建秘钥 function create_keygen(){ echo "开始新建免密秘钥" su - root <<EOF expect -c" spawn ssh-keygen -t rsa set timeout 30 expect { \"*.ssh/id_rsa*\" {send \"\r\";exp_continue} \"*Overwrite*\" {send \"y\r\";exp_continue} \"*empty for no passphrase*\" {send \"\r\";exp_continue} \"*Enter same passphrase again:*\" {send \"\r\";exp_continue} } " EOF if [ $? -eq 0 ];then echo "创建秘钥成功" else echo "创建秘钥失败" fi } # 免密钥到其他机器 function sync_keygen(){ echo "开始同步密钥到其他主机" for ((i=0;i<${#IP_LIST[*]};i++)) do su root<<EOF expect -c" spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@${IP_LIST[i]} expect { \"*yes/no*\" {send \"yes\r\";exp_continue} \"*password:*\" {send \"$password\r\";exp_continue} }" EOF done if [ $? -eq 0 ];then echo "设置免秘钥成功" else echo "设置免秘钥失败" fi } read -p "请输入es安装包位置, 如/opt/down : " FILE_PATH read -p "请输入安装包的名称, 如elasticsearch-7.7.0-linux-x86_64.tar.gz : " FILE_NAME read -p "请输入es安装目录, 如/opt : " INSTALL_PATH read -p "请输入集群名称 : " CLUSTER_NAME DATA_PATH='\'${INSTALL_PATH}'\/elasticsearch\/data' LOG_PATH='\'${INSTALL_PATH}'\/elasticsearch\/logs' # 安装es function install_es(){ echo "开始安装ES" cd ${FILE_PATH} sleep 1s tar -xf ${FILE_NAME} -C ${INSTALL_PATH} NAME_LENGTH=${#FILE_NAME} SPLIT_LENGTH=$((${NAME_LENGTH}-7)) FILE_NAME=${FILE_NAME:0:${SPLIT_LENGTH}} ln -s ${INSTALL_PATH}/${FILE_NAME} ${INSTALL_PATH}/elasticsearch sleep 1s cd ${INSTALL_PATH} chown -R ${username}:${username} ${INSTALL_PATH}/elasticsearch echo "chown cmd" "chown -R ${username}:${username} ${INSTALL_PATH}/elasticsearch*" sleep 1s } # 配置es function config_es(){ echo "开始ES集群化配置" sleep 1s cd ${INSTALL_PATH}/elasticsearch/config cp elasticsearch.yml.master elasticsearch.yml # 如果是修改没有配置好的elasticsearch.yml使用下面的echo echo 'cluster.name= '"${CLUSTER_NAME}" >> elasticsearch.yml echo 'node.name= '"${NAME_LIST[0]}" >> elasticsearch.yml # ... # 如果是修改已经配置好的elasticsearch.yml文件使用下面的sed -i sed -i '/cluster.name/s/:.*/: '"${CLUSTER_NAME}"'/' elasticsearch.yml sed -i '/node.name/s/:.*/: '\""${NAME_LIST[0]}"\"'/' elasticsearch.yml sed -i '/path.data/s/:.*/: '"${DATA_PATH}"'/' elasticsearch.yml sed -i '/path.logs/s/:.*/: '"${LOG_PATH}"'/' elasticsearch.yml sed -i '/network.host/s/:.*/: '"${IP_LIST[0]}"'/' elasticsearch.yml sed -i '/network.bind_host/s/:.*/: '"${IP_LIST[0]}"'/' elasticsearch.yml sed -i '/http.cors.allow-origin/s/:.*/: "http:\/\/'${IP_LIST[0]}':8080"/' elasticsearch.yml sed -i '/network.publish_host:/s/:.*/: '"${IP_LIST[0]}"'/' elasticsearch.yml sed -i '/cluster.initial_master_nodes:/s/:.*/: '${initial_hosts}'/' elasticsearch.yml sed -i '/discovery.zen.ping.unicast.hosts:/s/:.*/: '${unicast_hosts}'/' elasticsearch.yml echo 'vm.max_map_count = 262144' >>/etc/sysctl.conf sysctl -p echo ''${username}' hard nofile 65536' >>/etc/security/limits.conf echo ''${username}' soft nofile 65536' >>/etc/security/limits.conf echo ''${username}' hard nproc 4096' >>/etc/security/limits.conf echo ''${username}' soft nproc 4096' >>/etc/security/limits.conf } # 同步es安装包并开始统一修改elasticsearch.yml配置文件 function sync_cfg(){ echo "开始配置集群内其余主机" sleep 1s cd ${INSTALL_PATH} for ((i=1;i<${#IP_LIST[*]};i++)) do ssh -Tq ${IP_LIST[i]} <<CONFIG_EOF chown -R ${username}:${username} ${INSTALL_PATH}/elasticsearch sleep 1s cd ${INSTALL_PATH}/elasticsearch rm -rf ${INSTALL_PATH}/elasticsearch/data sleep 1s cd config sed -i '/node.name/s/:.*/: '"${NAME_LIST[i]}"'/' elasticsearch.yml sed -i '/network.host/s/:.*/: '"${IP_LIST[i]}"'/' elasticsearch.yml sed -i '/network.bind_host/s/:.*/: '"${IP_LIST[i]}"'/' elasticsearch.yml sed -i '/network.publish_host:/s/:.*/: '"${IP_LIST[i]}"'/' elasticsearch.yml echo -e '
export ES_HOME=${INSTALL_PATH}/elasticsearch
export PATH=${ES_HOME}/bin:$PATH'
>> /etc/profile source /etc/profile echo 'vm.max_map_count = 262144' >>/etc/sysctl.conf sysctl -p echo '${username} hard nofile 65536' >>/etc/security/limits.conf echo '${username} soft nofile 65536' >>/etc/security/limits.conf echo '${username} hard nproc 4096' >>/etc/security/limits.conf echo '${username} soft nproc 4096' >>/etc/security/limits.conf exit CONFIG_EOF done echo "修改配置文件成功" } add_user create_keygen sycn_keygen install_es config_es sync_cfg

좋은 웹페이지 즐겨찾기