环境准备
10.0.0.101 elk101.oldboyedu.com
10.0.0.102 elk102.oldboyedu.com
10.0.0.103 elk103.oldboyedu.com
1)做好双击互信
vim fenfa.sh
#!/bin/bash
#vars
elk_list="10.0.0.101 10.0.0.102 10.0.0.103"
[ -e /root/.ssh/id_rsa ] || ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q
function fenfa(){
for ip in ${elk_list}
do
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@$ip
done
}
sshpass >/dev/null
if [ $? -ne 0 ];then
yum install -y sshpass >/dev/null
fenfa
else
fenfa
fi
2)环境准备,host解析、配置文件和脚本准备
#host解析
[root@elk101.oldboyedu.com ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.101 elk101.oldboyedu.com
10.0.0.102 elk102.oldboyedu.com
10.0.0.103 elk103.oldboyedu.com
#配置文件
[root@elk101.oldboyedu.com ~]#cat ./elasticsearch.yml
cluster.name: oldboyedu-linux85-binary
path.data: /oldboyedu/data/es7
path.logs: /oldboyedu/logs/es7
network.host: 0.0.0.0
discovery.seed_hosts: ["elk101.oldboyedu.com","elk102.oldboyedu.com","elk103.oldboyedu.com"]
cluster.initial_master_nodes: ["elk101.oldboyedu.com","elk102.oldboyedu.com","elk103.oldboyedu.com"]
#测试双机互信
ssh elk101.oldboyedu.com ls
ssh elk102.oldboyedu.com ls
ssh elk103.oldboyedu.com ls
3)使用10.0.0.101作为管理节点
yum install -y ansible
#打开ansible日志
[root@m01 ~]# egrep -vn '^$|#' /etc/ansible/ansible.cfg
10:[defaults]
71:host_key_checking = False
111:log_path = /var/log/ansible.log
#准备好主机清单
[root@elk101.oldboyedu.com ~]#cat /etc/ansible/hosts
[elk]
10.0.0.101
10.0.0.102
10.0.0.103
#内核调优
[root@elk101.oldboyedu.com ~]# cat /etc/security/limits.d/es7.conf
* soft nofile 65535
* hard nofile 131070
* hard nproc 8192
[root@elk101.oldboyedu.com ~]# cat /etc/sysctl.d/es.conf
vm.max_map_count=524288
#开始书写剧本
vim ~/deploy_es_multi_instance.yml
- hosts: elk
gather_facts: false
tasks:
- name: 1)所有节点创建运行ES服务的用户
user:
name: oldboyedu
uid: 2023
state: present
- name: 2)创建ElasticSearch的工作目录
file:
path: /oldboyedu/{{ item }}/es7
owner: oldboyedu
group: oldboyedu
state: directory
loop:
- logs
- data
- softwares
- name: 3)解压软件包
unarchive:
src: ./elasticsearch-7.17.5-linux-x86_64.tar.gz
dest: /oldboyedu/softwares/es7/
owner: oldboyedu
group: oldboyedu
#模块参考链接https://docs.ansible.com/ansible/latest/collections/ansible/builtin/unarchive_module.html#ansible-collections-ansible-builtin-unarchive-module
- name: 4)修改配置文件(分发配置文件并备份原有的配置文件)
copy:
src: ./elasticsearch.yml
dest: /oldboyedu/softwares/es7/elasticsearch-7.17.5/config/
backup: yes
- name: 5)针对ES基础调优, 修改文件打开数量上线,修改后需要断开会话,调大内核虚拟内存映射值
#注意 nofile修改后要断开会话重连才有效
copy:
src: /etc/security/limits.d/es7.conf
dest: /etc/security/limits.d/
backup: yes
- name: 5)针对ES基础调优, 修改文件打开数量上线,修改后需要断开会话,调大内核虚拟内存映射值
#注意 sysctl 参数修改 要sysctl -f|p 文件 才能修改
copy:
src: /etc/sysctl.d/es.conf
dest: /etc/sysctl.d/es.conf
backup: yes
- name: 6)书写systemctl管理脚本并分发
copy:
src: /usr/lib/systemd/system/es7.service
dest: /usr/lib/systemd/system/
backup: yes
- name: 7)直接刷新后设置服务为开机自启动然后,重启机器,就要可以一步到位
shell: sysctl -f /etc/sysctl.d/es.conf && systemctl enable es7 && shutdown -r 1
这是管理节点准备好的目录
[root@elk101.oldboyedu.com ~]#ll
total 588688
-rw-------. 1 root root 1370 Jul 30 17:34 anaconda-ks.cfg
-rw-r--r-- 1 root root 1723 Jul 31 17:42 deploy_es_multi_instance.yml
-rw-r--r-- 1 root root 149672445 Jul 30 16:29 elasticsearch-6.8.23.tar.gz
-rw-r--r-- 1 root root 308183534 Jul 30 16:28 elasticsearch-7.17.5-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 317 Jul 31 17:19 elasticsearch.yml
-rw-r--r-- 1 root root 379 Jul 31 16:07 fenfa.sh
-rw-r--r-- 1 root root 144935989 Jul 30 16:28 jdk-8u291-linux-x64.tar.gz
运行剧本:
ansible-playbook -i /etc/ansible/hosts ./deploy_es_multi_instance.yml