Ansible部署主从+读写分离

本文介绍了如何利用Ansible自动化部署MySQL的主从复制架构,并结合Mycat实现读写分离。首先进行节点规划,然后搭建Ansible的基础环境,包括关闭防火墙、配置域名解析等。接着编写Ansible-playbook,详细分解为roles-init(初始化环境)、roles-db(安装MySQL)和roles-mycat(部署Mycat)三个部分。通过这个过程,实现了高效且可靠的数据库集群部署。
摘要由CSDN通过智能技术生成

1、节点规划

IP 主机名 节点
192.168.11.3 ansible ansible-server节点
192.168.11.15 master mariadb数据库集群主节点
192.168.11.14 slave mariadb数据库集群从节点
192.168.11.8 mycat mycat中间件服务节点

2、Ansible节点基础环境搭建

  • 关闭防火墙
[root@ansible ~]# systemctl stop firewalld && systemctl disable firewalld
  • Selinux
[root@ansible ~]# setenforce 0 && sed -i 's/enforcing/disabled/g' /etc/selinux/config
  • iptables
[root@ansible ~]# iptables -F &&  iptables -X && iptables -Z && iptables-save
  • 域名解析
[root@ansible ~]# [root@ansible ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10	controller
192.168.11.15	master
192.168.11.14	slave
192.168.11.8	mycat
  • 无密钥登录
[root@ansible ~]# ssh-keygen -t rsa   
[root@ansible ~]# ssh-copy-id master/slave/mycat
  • 配置yum源
[root@ansible ~]# rm -rf /etc/yum.repos.d/*
[root@ansible ~]# cat /etc/yum.repos.d/local.repo 
[centos]
name=centos
gpgcheck=0
enabled=1
baseurl=http://controller/centos
[Ansible]
name=Ansible-repo
gpgcheck=0
enabled=1
baseurl=http://controller/Ansible
  • 安装Ansible
[root@ansible ~]# yum install -y ansible
  • 修改/etc/ansible/hosts文件
[root@ansible ~]# cat /etc/ansible/hosts
[db]
master
slave

[middleware]
mycat
  • master、slave、mycat节点自行修改主机名
# hostnamectl set-hostname master
# hostnamectl set-hostname slave
# hostnamectl set-hostname mycat
  • 测试
[root@ansible ~]# ssh master
[root@ansible ~]# ssh slave
[root@ansible ~]# ssh mycat

[root@ansible ~]# ansible all -m ping 
mycat | SUCCESS => {
   
    "ansible_facts": {
   
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
master | SUCCESS => {
   
    "ansible_facts": {
   
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
slave | SUCCESS => {
   
    "ansible_facts": {
   
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

3、Ansible-playbook编写

  • 创建playbook工作目录
# cd /etc/ansible/roles/
# mkdir read_write_separation
# cd read_write_separation/
  • 创建局部变量、角色目录
[root@ansible read_write_separation]# mkdir {group_vars,roles}
  • 创建局部变量文件
[root@ansible read_write_separation]# touch group_vars/all
  • 创建playbook入口文件
[root@ansible read_write_separation]# touch install_read_write_separation.yaml
  • 构建角色目录
[root@ansible read_write_separation]# mkdir roles/init/{files,tasks,templates}
[root@ansible read_write_separation]# mkdir roles/db/{tasks,templates}
[root@ansible read_write_separation]# mkdir roles/mycat/{files,tasks,templates}
  • 编辑变量声明文件group_vars/all
[root@ansible read_write_separation]# cat group_vars/all 
hostip1: 192.168.11.15
hostip2: 192.168.11.14
hostip3: 192.168.11.8
hostname1: master
hostname2: slave
hostname3: mycat
DB_PASS: 123456
logic_library: USERDB
  • 编辑安装入口文件
[root@ansible read_write_separation]# cat install_read_write_separation.yaml 
---
- hosts: all
  remote_user: root
  roles: 
    - init
- hosts: db
  remote_user: root
  roles: 
    - db
- hosts: middleware
  remote_user: root
  roles: 
    - mycat

1、roles-init

  • 编辑初始化环境主任务
[root@ansible read_write_separation]# cat roles/init/tasks/main.yaml 
---
- name: copy hosts.j2 template
  template: 
    src: hosts.j2
    dest: /etc/hosts

- name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值