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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Git에서 개발 환경을 정리해 보았습니다.로컬에 작업 디렉토리 만들기 mkdir [ワーキングディレクトリ名] 작업 디렉토리로 이동 cd [ワーキングディレクトリ名] 작업 디렉토리 초기화 git init git로 연결할 원격 리포지토리를 만듭니다. 이 때 REA...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.