Ansible服务部署MariaDB 集群与ELK集群服务
【题目 1】Ansible服务部署:部署 MariaDB 集群
使用OpenStack私有云平台,创建 4台系统为centos7.9的云主机,其中一台作为 Ansible的母机并命名为 ansible,另外三台云主机命名为 node1、node2、node3;使用这一台母机,编写 Ansible脚本(在/root目录下创建 example目录作为 Ansible工作目录,部署的入口文件命名为 cscc_install.yaml ) , 对其他三台云主机进行安装高可用数据库集群(MariaDB_Galera_cluster,数据库密码设置为 123456)的操作。
关闭4台主机防火墙和安全子系统
[root@ansible ~]# systemctl stop firewalld
[root@ansible ~]# setenforce 0
配置主机映射
[root@ansible ~]# echo 192.168.100.10 ansible >> /etc/hosts
[root@ansible ~]# echo 192.168.100.20 node-1 >> /etc/hosts
[root@ansible ~]# echo 192.168.100.30 node-3 >> /etc/hosts
[root@ansible ~]# echo 192.168.100.40 node-3 >> /etc/hosts
配置免密钥
[root@ansible ~]# ssh-copy-id node-1
[root@ansible ~]# ssh-copy-id node-2
[root@ansible ~]# ssh-copy-id node-3
配置yum源
[root@ansible ~]# tar -zxf mariadb-repo.tar.gz -C /opt/
[root@ansible ~]# tar -zxf ansible.tar.gz -C /opt/
[root@ansible ~]# mount /dev/cdrom /mnt/
[root@ansible ~]# cp -rfv /mnt/* /opt/
[root@ansible ~]# cat >> /etc/yum.repos.d/local.repo << EOF
\> [centos]
\> name=centos
\> baseurl=file:///opt/
\> gpgcheck=0
\> enabled=1
\> [ansible]
\> name=ansible
\> baseurl=file:///opt/ansible/
\> gpgcheck=0
\> enabled=1
\> [mariadb]
\> name=mariadb
\> baseurl=file:///opt/mariadb-repo
\> gpgcheck=0
\> enabled=1
\> EOF
[root@ansible ~]# yum -y install mariadb mariadb-server mariadb-common vsftpd ansible
[root@ansible example]# cat >> /etc/ansible/hosts << EOF
\> [node]
\> node-1
\> node-2
\> node-3
\> EOF
[root@ansible ~]# echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf
[root@ansible ~]# systemctl restart vsftpd
[root@ansible ~]# mkdir example
[root@ansible ~]# cd example/
[root@ansible example]# cp -rf /etc/yum.repos.d/local.repo .
[root@ansible example]# cat local.repo
[centos]
name=centos
baseurl=ftp://192.168.100.10/
gpgcheck=0
enabled=1
[ansible]
name=ansible
baseurl=ftp://192.168.100.10/ansible/
gpgcheck=0
enabled=1
[mariadb]
name=mariadb
baseurl=ftp://192.168.100.10/mariadb-repo
gpgcheck=0
enabled=1
[root@ansible example]# cat server.cnf
[server]
[mysqld]
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.100.20,192.168.100.30,192.168.100.40
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
[embedded]
[mariadb]
[mariadb-10.3]
[root@ansible example]# vim cscc_install.yaml
\---
\- hosts: all
remote_user: root
tasks:
\- shell: rm -rf /etc/yum.repos.d/*
\- copy: src=local.repo dest=/etc/yum.repos.d/local.repo
\- shell: yum clean all && yum makecache
\- shell: yum -y install mariadb mariadb-server mariadb-common galera rsync net-tools
\- name: copy server.cnf
copy: src=server.cnf dest=/etc/my.cnf.d/server.cnf
\- hosts: node-1
remote_user: root
tasks:
\- shell: /usr/sbin/mysqld --wsrep-new-cluster -u root &
\- shell: mysqladmin -uroot password 123456
\- shell: mysql -u root -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"
\- hosts: node-2,node-3
remote_user: root
tasks:
\- shell: systemctl start mariadb && systemctl enable mariadb
[root@ansible example]# ansible-playbook -C cscc_install.yaml
[root@ansible example]# ansible-playbook cscc_install.yaml
PLAY RECAP ************************************************************************************************************************************************************************
node-1 : ok=10 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node-2 : ok=8 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node-3 : ok=8 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@localhost ~]# netstat -ntlp | grep 4567
tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 8750/mysqld
[root@localhost ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.3.23-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show status like 'wsrep_ready';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready | ON |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> exit
[root@localhost ~]#
【题目 2】Ansible服务部署:部署ELK集群服务
使用赛项提供的OpenStack 私有云平台,创建三台 CentOS7.9 系统的云主机分别命名为elk-1、elk-2和elk-3,Ansible主机可以使用上一题的环境。要求Ansible节点编写剧本,执行 Ansible剧本可以在这三个节点部署 ELK集群服务(在/root目录下创建 install_elk 目录作为 ansible工作目录,部署的入口文件命名为 install_elk.yaml)。具体要求为三个节点均安装Elasticserach服务并配置为 Elasticserach集群;kibana安装在第一个节点;Logstash安装在第二个节点。
关闭4台主机防火墙和安全子系统
[root@localhost ~]# hostnamectl set-hostname ansible
[root@ansible ~]# systemctl stop firewalld
[root@ansible ~]# setenforce 0
配置主机映射
[root@ansible ~]# echo 192.168.100.10 ansible >> /etc/hosts
[root@ansible ~]# echo 192.168.100.20 elk-1 >> /etc/hosts
[root@ansible ~]# echo 192.168.100.30 elk-3 >> /etc/hosts
[root@ansible ~]# echo 192.168.100.40 elk-3 >> /etc/hosts
[root@ansible example]# cat >> /etc/ansible/hosts << EOF
> [elk]
> elk-1
> elk-2
> elk-3
> EOF
配置免密钥
[root@ansible ~]# ssh-copy-id elk-1
[root@ansible ~]# ssh-copy-id elk-2
[root@ansible ~]# ssh-copy-id elk-3
[root@ansible ~]# tar -zxf Ansible.tar.gz
[root@ansible ~]# ls
ansible.tar.gz Ansible.tar.gz elasticsearch-6.0.0.rpm kibana-6.0.0-x86_64.rpm logstash-6.0.0.rpm
[root@ansible ~]# yum -y install /root/*
[root@ansible ~]# mkdir install_elk
[root@ansible ~]# cd install_elk/
[root@ansible install_elk]# vim /etc/elasticsearch/elasticsearch.yml
server.port: 5601
server.host: 192.168.10.151
elasticsearch.url: "http://192.168.10.151:9200"
[root@ansible install_elk]# cp -rfv /etc/elasticsearch/elasticsearch.yml .
[root@ansible install_elk]# vim /etc/kibana/kibana.yml
server.port: 5601
server.host: 192.168.10.151
elasticsearch.url: "http://192.168.10.151:9200"
[root@ansible install_elk]# cp -rfv /etc/kibana/kibana.yml .
[root@ansible install_elk]# cp -rfv /etc/hosts .
[root@ansible ~]# cp -rfv *.rpm /opt/ansible/packages/
[root@ansible install_elk]# vim local.repo
[centos]
name=centos
baseurl=ftp://192.168.100.10/ansible/
gpgcheck=0
enabled=1
[centos]
name=centos
baseurl=ftp://192.168.100.10/
gpgcheck=0
enabled=1
[root@ansible install_elk]# systemctl restart vsftpd
[root@ansible install_elk]# vi install_elk.yaml
---
- hosts: all
remote_user: root
tasks:
- shell: rm -rf /etc/yum.repos.d/*
- copy: src=local.repo dest=/etc/yum.repos.d/local.repo
- copy: src=elasticsearch-6.0.0.rpm dest=/opt/
- copy: src=kibana-6.0.0-x86_64.rpm dest=/opt/
- copy: src=logstash-6.0.0.rpm dest=/opt/
- shell: yum clean all && yum makecache
- shell: yum -y install java* net-tools
- shell: yum -y install /opt/*
- copy: src=elasticsearch.yml dest=/etc/elasticsearch.yml
- shell: systemctl start elasticsearch
- copy: src=kibana.yml dest=/etc/kibana.yml
- hosts: elk-1
remote_user: root
tasks:
- copy: src=kibana.yml dest=/etc/kibana/kibana.yml
- shell: systemctl start kibana && systemctl enable kibana
- hosts: elk-2
remote_user: root
tasks:
- shell: systemctl start logstash
[root@ansible install_elk]# ansible-playbook install_elk.yaml
PLAY RECAP ************************************************************************************************************************************************************************
node-1 : ok=11 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node-2 : ok=11 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node-3 : ok=11 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@localhost yum.repos.d]# netstat -ntlp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5601 0.0.0.0:* LISTEN 108212/node
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1077/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1311/master
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 84384/java
tcp6 0 0 ::1:9200 :::* LISTEN 84384/java
tcp6 0 0 127.0.0.1:9300 :::* LISTEN 84384/java
tcp6 0 0 ::1:9300 :::* LISTEN 84384/java
tcp6 0 0 :::22 :::* LISTEN 1077/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1311/master

浙公网安备 33010602011771号