利用ansible书写playbook搭建HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境续
ansible、playbook、haproxy、keepalived、PXC
haproxy+keepalived双主模式调度pxc集群
HAProxy介绍
反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,
当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入
引入了frontend,backend;frontend根据任意 HTTP请求头内容做规则匹配,然后把请求定向到相关的backend.
Keepalived介绍
Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。
一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),
一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,
当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
一、环境准备:
| proxy | 192.168.1.241(外网IP:139.9.219.*) | 跳板机(堡垒主机)、安装ansible、数据库客户端 |
| pxc-0001 | 192.168.1.181 | PXC数据库服务器角色 |
| pxc-0002 | 192.168.1.182 | PXC数据库服务器角色 |
| pxc-0003 | 192.168.1.183 | PXC数据库服务器角色 |
| ha-0001 | 192.168.1.171 | haproxy+keepalived |
| ha-0002 | 192.168.1.172 | haproxy+keepalived |
PXC集群搭建见随笔:https://www.cnblogs.com/jrjs/p/11764073.html
华为云云主机具体购买流程请浏览随笔:https://www.cnblogs.com/jrjs/p/11742221.html
在华为云购买台云主机ha-0001、ha-0002

添加俩个负载均衡器(elb-pxc1、elb-pxc2)

分别添加监听器、后端服务器组

添加监听器,让其监听3306端口。

添加后端服务器组,把ha-0001、ha-0002添加进来。采用加权轮询算法。

添加负载均衡器如下:
单击右上方购买增强型负载均衡



使用Xshell连接跳板机上配置ansible主机分组:

在跳板机上书写haproxy.cfg及keepalived.conf配置文件,通过playbook拷贝到俩台服务器上
haproxy.cfg配置文件如下:
[root@proxy ~]# vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2 ##[err warning info debug]
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid ##haproxy的pid存放路径
maxconn ##最大连接数,默认4000
user haproxy
group haproxy
daemon ##创建1个进程进入deamon模式运行
defaults
mode tcp ##默认的模式mode { tcp|http|health }
option dontlognull ##不记录健康检查的日志信息
option httpclose ##每次请求完毕后主动关闭http通道
option httplog ##日志类别http日志格式
option forwardfor ##后端服务器可以从Http Header中获得客户端ip
option redispatch ##serverid服务器挂掉后强制定向到其他健康服务器
timeout connect #如果backend没有指定,默认为10s
timeout client ##客户端连接超时
timeout server ##服务器连接超时
maxconn ##最大连接数
retries ##3次连接失败就认为服务不可用,也可以通过后面设置 listen stats 0.0.0.0: #监听端口
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm Haproxy Manager #进入管理解面查看状态信息
stats auth admin:admin #统计页面用户名和密码设置 listen pxcsrv-rewrite 0.0.0.0:
balance roundrobin
server pxc- 192.168.1.181: check inter rise fall
server pxc- 192.168.1.182: check inter rise fall
server pxc- 192.168.1.183: check inter rise fall
keepalived.conf配置文件如下:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost //设置报警收件人邮箱
vrrp_iptables
}
notification_email_from Alexandre.Cassen@firewall.loc //设置发件人
smtp_server 192.168.200.1 //定义邮件服务器
smtp_connect_timeout
router_id LVS_DEVEL //设置路由ID号
}
vrrp_instance VI_1 {
state MASTER //主服务器为MASTER(ha-0002备服务器需要修改为BACKUP)
interface eth0 //定义网络接口
virtual_router_id //主备服务器VRID号必须一致
priority //服务器优先级,优先级高优先获取VIP
advert_int
authentication {
auth_type PASS
auth_pass //主备服务器密码必须一致
}
virtual_ipaddress { //谁是主服务器谁获得该VIP,当主服务器宕掉VIP自动飘到备服务器上
192.168.1.48/ brd 192.168.1.255 dev eth0 label eth0:
}
}
vrrp_instance VI_2 {
state BACKUP //备服务器为BACKUP(ha-0001主服务器需要修改为MASTER)
interface eth0 //定义网络接口
virtual_router_id //主备服务器VRID号必须一致
priority //服务器优先级,优先级高优先获取VIP
advert_int
authentication {
auth_type PASS
auth_pass //主备服务器密码必须一致
}
virtual_ipaddress { //谁是主服务器谁获得该VIP,当主服务器宕掉VIP自动飘到备服务器上
192.168.1.49/ brd 192.168.1.255 dev eth0 label eth0:
}
}
然后在跳板机书写playbook,playbook具体内容如下:
---
#安装haproxy,keepalived相关软件包
- hosts: ha+kp
tasks:
- name: installed haproxy,keepalived
yum:
name: haproxy,keepalived
state: installed
#在跳板机上编辑haproxy配置文件,拷贝到俩台服务器上
- name: copy haproxy
copy:
src: /root/haproxy.cfg
dest: /etc/haproxy/haproxy.cfg
#在跳板机上编辑keepalived配置文件,拷贝到俩台服务器上
- name: copy keepalived
copy:
src: /root/keepalived.conf
dest: /etc/keepalived/keepalived.conf
#修改keepalived.conf配置文件
- hosts: ha-
tasks:
- name: modify keepalived.conf
replace:
path: "/etc/keepalived/keepalived.conf"
regexp: "MASTER"
replace: "linshi"
- replace:
path: "/etc/keepalived/keepalived.conf"
regexp: "BACKUP"
replace: "MASTER"
- replace:
path: "/etc/keepalived/keepalived.conf"
regexp: "linshi"
replace: "BACKUP"
- replace:
path: "/etc/keepalived/keepalived.conf"
regexp: ""
replace: ""
- replace:
path: "/etc/keepalived/keepalived.conf"
regexp: ""
replace: ""
- replace:
path: "/etc/keepalived/keepalived.conf"
regexp: ""
replace: ""
#启动haproxy、keepalived服务
- hosts: ha+kp
tasks:
- name: start haproxy
service:
name: haproxy
enabled: yes
state: started
- name: start keepalived
service:
name: keepalived
enabled: yes
state: started
运行完成后在ha-0001查看haproxy服务是否启动:

查看ha-0001上的keepalived服务是否启动

运行完成后在ha-0002查看haproxy服务是否启动:

查看ha-0002上的keepalived服务是否启动

在ha-0001、ha-0002上使用ip a s命令,查看设置的vip48、49是否生效:


在跳板机访问ha-0001或者ha-0002的vip是否可以访问到:


到此haproxy+keepalived双主模式配置成功,成功的让俩台服务器同时工作,减轻单台调度器的压力,也实现了资源的合理利用。
利用ansible书写playbook搭建HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境续的更多相关文章
- HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境
HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服 ...
- LVS + keepalived + tomcat负载均衡及高可用实现(初级)
1.首先检测Linux服务器是否支持ipvs 执行如下命令:modprobe -l|grep ipvs 输出: kernel/net/netfilter/ipvs/ip_vs.ko kernel/ne ...
- HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用
HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用 Ip地址划分: 240 mysql_b2 242 mysql_b1 247 haprox ...
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
- Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用
上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx ...
- haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...
- 利用ansible书写playbook在华为云上批量配置管理工具自动化安装ceph集群
首先在华为云上购买搭建ceph集群所需云主机: 然后购买ceph所需存储磁盘 将购买的磁盘挂载到用来搭建ceph的云主机上 在跳板机上安装ansible 查看ansible版本,检验ansible是否 ...
- MySQL架构之keepalived+haproxy+mysql 实现MHA中slave集群负载均衡的高可用(原创)
MySQL的高可用方案一般有如下几种:keepalived+双主,MHA,PXC,MMM,Heartbeat+DRBD等,比较常用的是keepalived+双主,MHA和PXC. HAProxy是一款 ...
- HaProxy+keepalived实现负载均衡
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...
随机推荐
- python装饰器 语法糖
简介: 装饰器(Decorators)是 Python 的一个重要部分.简单地说:他们是修改其他函数的功能的函数. 比如说我们写flask,路由就是用装饰器定义的.如果写权限控制,那么权限控制一般也是 ...
- spring中RequestBody注解接收参数时用JSONField转参数名无效问题
问题: 在springboot项目中使用@RequestBody注解接收post请求中body里的json参数的情况.即: @RequestMapping(value = "/get-use ...
- 使用vs code开发.net core2.2时OmniSharp.MSBuild.ProjectLoader无法解析"xxx"的解决方法
如图: 都是常用的nuget包呢,怎么无法解析呢? 第一反应是环境问题,果断搜索,baidu.google.bing.github一顿好搜啊,竟没有找到答案,看来是掉进了一个黄金坑! 重装vscode ...
- SpokenEnglish01_ When's it due?
1 Pronunciation and Intonation When's it due? 解析:When’s it due? 2 Key Points 2.1 Due adj: 到期的,截止的 It ...
- Navicat 创建oracle表空间、新建用户、授权
1.利用数据库管理员账号:SYSTEM,再配合数据库管理口令,连接Oracle数据库. 登录界面: 2.创建表空间文件 进入如下界面 进入如下界面 弹出如下界面,输入表空间名称 最终结果: 2 .新 ...
- XXE任意文件读取(当xml解析内容有输出时)
利用XXE漏洞读取文件 参考:https://www.jianshu.com/p/4fc721398e97 首先找到登录源码如下: 由题目可以利用XXE漏洞读取文件 先登录用Burp Suite抓包: ...
- Java-手动搭建SSH(maven版)
创建maven项目 把maven项目变为动态网站,步骤如下: 项目结构图如下: 开始搭建spring+springmvc+Hibernate项目 环境版本就不多说了,直接贴出pom.xml文件 < ...
- cocos creator图片渲染问题!
问题:游戏项目需要添加一个开场剧情(); 第一时间使用了cc.component.scheduleOnce (), 里面的回调函数为 cc.loader.loadRes(). 进入游戏时,渲染主场景后 ...
- 【简解】SP7556 Stock Charts
题目大意 给出一个折线图,有N条线段,你想要把这些线段分成几个集合,使得每个集合中任意两条线段不相交. 求最少集合数. 分析 喵帕斯:以下提及的所有折线均指横坐标在\([1,k]\)里的折线段. 思考 ...
- 华为云·寻找黑马程序员#【代码重构之路】如何“消除”if/else【华为云技术分享】
1. 背景 if/else是高级编程语言中最基础的功能,虽然 if/else 是必须的,但滥用 if/else,特别是各种大量的if/else嵌套,会对代码的可读性.可维护性造成很大伤害,对于阅读代码 ...