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                                                                                                                                                                                                                                                       
posted @ 2024-02-20 18:37  xiaoxins-  阅读(239)  评论(0)    收藏  举报