oracle 实现HA,使用KeepAlived实现HAProxy高可用
使用KeepAlived实现HAProxy高可用
在以前的文章中我们实现了使用HAProxy来转发读请求到后端多台mysql从库上,但是对于HAProxy的高可用(HA)需
求没有配置,本文在以前的基础再增加一个HAProxy的备份机器.这样当主服务器的HAProxy挂掉后,备份机器能够迅
速的进行自动接管.我们通过KeepAlived来实现这样的需求
主HAProxy: 192.168.10.192
备HAProxy: 192.168.10.85
VIP:192.168.10.158
整个项目的拓扑结构如下.
vip
|
--主haproxy-- --备haproxy--
| \
| \
--mysql-- --mysql--
--在主,备HAProxy上安装keepalived软件
[root@cscscslocalhost 1109]# tar -xvf keepalived-1.2.1.tar.gz
[root@cscscslocalhost keepalived-1.2.1]# ./configure --prefix=/usr/local/keepalived
checking for gcc... gcc
[root@cscscslocalhost keepalived-1.2.1]# make
[root@cscscslocalhost keepalived-1.2.1]# make install
--在主,备HAProxy上把KeepAlived的安装目录下的sbin目录加到.bash_profile文件中,然后source生效
PATH=$PATH:$HOME/bin:/usr/local/haproxy/sbin:/sbin:/bin:/usr/local/keepalived/sbin
--在主,备HAProxy上查看keepalived,确保成功安装.
[root@cscscslocalhost sbin]# keepalived -v
Keepalived v1.2.1 (11/12,2014)
--在主,备HAProxy上修改KeepAlived的配置文件
主HAProxy的配置
[root@cscscslocalhost keepalived]# vi /usr/local/keepalived/etc/keepalived/keepalived.conf
global_defs {
notification_email {
}
#notification_email_from
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy
{
script "/usr/local/keepalived/chk_haproxy.sh"
interval 1
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
mcast_src_ip 192.168.10.192
authentication {
auth_type PASS
auth_pass 111111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.10.158
}
}
备用HAProxy服务器的配置
global_defs {
notification_email {
}
#notification_email_from
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy
{
script "/usr/local/keepalived/chk_haproxy.sh"
interval 1
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
mcast_src_ip 192.168.10.85
authentication {
auth_type PASS
auth_pass 111111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.10.158
}
}
--在主,备HAProxy上编写脚本文件,这个脚本的目的是检查HAProxy存活性,如果HAProxy
死掉了,那么KeepAlived也会被杀死,这样保证备HAProxy能确正常的接管
[root@cscscslocalhost ~]# vi /usr/local/keepalived/chk_haproxy.sh
#!/bin/bash
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
if [ ${status} = "0" ]; then
/bin/kill -9 `/sbin/pidof keepalived`
fi
--在主,备HAProxy上修改脚本执行权限
[root@cscscslocalhost ~]# chmod 755 /usr/local/keepalived/chk_haproxy.sh
--在主HAProxy上启动KeepAlived,通过/var/log/messages,可以看出已经功启动,并进入master状态
[root@cscscslocalhost keepalived]# keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
[root@cscscslocalhost ~]# tail -f /var/log/messages
Nov 12 14:28:15 cscscslocalhost Keepalived: Starting Keepalived v1.2.1 (11/12,2014)
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: Registering Kernel netlink reflector
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: Registering Kernel netlink command channel
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: Registering gratutious ARP shared channel
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: Opening file '/usr/local/keepalived/etc/keepalived/keepalived.conf'.
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: Configuration is using : 64914 Bytes
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
Nov 12 14:28:15 cscscslocalhost Keepalived: Starting VRRP child process, pid=17731
Nov 12 14:28:15 cscscslocalhost Keepalived_vrrp: VRRP_Script(chk_haproxy) succeeded
Nov 12 14:28:16 cscscslocalhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Nov 12 14:28:17 cscscslocalhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
[root@cscscslocalhost keepalived]# ip a
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 1c:6f:65:d9:4a:6f brd ff:ff:ff:ff:ff:ff
inet 192.168.10.192/24 brd 192.168.10.255 scope global eth0
inet 192.168.10.158/32 scope global eth0
--测试通过VIP来连接mysql
[root@localhost ~]# mysql -u root -p123456 --host=192.168.10.158 --port=23306
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 50484
Server version: 5.6.14-rel62.0 Percona Server with XtraDB (GPL), Release rel62.0, Revision 483
Copyright (c) 2009-2013 Percona LLC and/or its affiliates
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| login_sso |
| zabbix |
+--------------------+
6 rows in set (0.00 sec)
连接成功.
手动在主HAProxy上杀死haproxy,模拟haproxy故障,这样备份HAProxy会进行接管.
[root@cscscslocalhost keepalived]# ps -eaf | grep 4852
nobody 4852 1 0 15:13 ? 00:00:00 haproxy -f /etc/haproxy.cfg
root 5019 12171 0 15:13 pts/0 00:00:00 grep 4852
[root@cscscslocalhost keepalived]# kill -9 4852
--备份HAProxy的/var/log/messages日志,可以看出备份HAProxy已经接管了VIP
Nov 12 14:27:56 db135 Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert
Nov 12 14:27:56 db135 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Nov 12 14:28:41 db135 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Nov 12 14:28:42 db135 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Nov 12 14:28:48 localhost.localdomain haproxy[12523]: Connect from 192.168.10.145:54535 to 192.168.10.158:23306 (mysql_proxy/TCP)
--重新show databases,发现已经重连了,整个过程在2-3秒的样子.
mysql> show databases;
No connection. Trying to reconnect...
Connection id: 50815
Current database: *** NONE ***
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| login_sso |
| zabbix |
+--------------------+
6 rows in set (0.00 sec)
oracle 实现HA,使用KeepAlived实现HAProxy高可用相关推荐
- 基于keepalived实现haproxy高可用的双主模型配置
Keepalived会主动检测web服务器,把有故障的服务器从系统中剔除,在服务器修复以后会重新加入到服务器群众,不影响服务器的正常工作 VRRP:虚拟路由冗余协议 它把一个虚拟路由器的责任动 ...
- keepalived(haproxy高可用、haproxy高可用双主、lvs+keepalived)
LAN客户端判定哪个路由器应该为其到达目标主机的下一跳网关的方式有动态及静态决策两种方式,其中,常见的动态路由发现方式有如下几种: 1.Proxy ARP -- 客户端使用ARP协议获取其想要到达的目 ...
- keepalived实现haproxy高可用详解
一,keepalived介绍 keepalived是一个可以实现某些资源高可用的开源软件,其主要的组件包括core,check,vrrp,libipfwc,libipvs,这里说下各个组件的功能. c ...
- HAProxy基于KeepAlived实现Web高可用及动静分离
前言 软件负载均衡一般通过两种方式来实现: 基于操作系统的软负载实现 基于第三方应用的软负载实现 LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载. HA ...
- saltstack实现haproxy+keepalived负载均衡+高可用(二)
一键部署haproxy+keepalived实现负载均衡+高可用 实验环境: !!!! 特别注意: www.westos.org为test1的minion名字 test1: 172.25.1.1 ...
- Keepalived实现mysql高可用
文章目录 0.参考资料 1.实现mysql双主高可用 1.1.高可用方案选择 1.2.双主基础上实现高可用 1.2.1.安装 1.2.2.主从配置文件 2.原理介绍(整理自网络) 0.参考资料 官方地 ...
- MySQL共享存储主备模式利用Keepalived实现双机高可用
简单介绍 先简单说下MySQL主从复制与keepalived模式和MySQL共享存储与Keepalived模式 MySQL共享存储主备模式不同于MySQL主主复制模式,MySQL主主是利用MySQL自 ...
- 【7W字长文】使用LVS+Keepalived实现Nginx高可用,一文搞懂Nginx
往期文章一览 分布式会话与单点登录SSO系统CAS,包含完整示例代码实现 [15W字长文]主从复制高可用Redis集群,完整包含Redis所有知识点 使用LVS+Keepalived实现Nginx高可 ...
- 【Keepalived】开源高可用的Keepalived
Keepalived 一.What is Keepalived? 二.什么是高可用? 三.keepalived故障转移实现高可用 四.keepalived运行环境 1.下载安装 2.启动keepali ...
最新文章
- 【实验】华为静态路由基础配置
- java简单课程设计_!高分跪求帮忙写一个简单小程序的JAVA课程设计报告(内详!!)...
- iDempiere = OSGi + ADempiere 一款ERPCRMSCM系统、助力中小企业发展
- 4-什么是Image和container
- 我的Linux折腾史
- 东大OJ-1430-PrimeNumbers
- linux unix域socket_计算机通信之谜,带你彻底理解socket网络编程(一)
- Android之AdapterView 简述
- android更改应用图标大小,Android选项菜单:更改图标大小
- 大连开发区中老年运动微信群_大连跑步微信群
- php.ini 验证码,php怎么解决验证码无法显示的问题
- linux路由表怎么看懂,教你读懂Linux路由表
- ps怎样裁剪html网页,Photoshop另类实用技巧:切网页
- 个人发展战略思维导图
- C++设计模式 - 单例模式(Singleton)
- C语言文件之程序文件和数据文件
- “知识分享与交流”活动有感
- RestTemplete
- c语言可乐,★★PC可乐吧系列教程之 -- QQ用户小心!C语言实现QQ密码大盗★★
- 不得不知的MySQL索引和查询优化
热门文章
- 再品Resnet残差网络
- pandas显示不全问题
- make -C $(KDIR) M=$(PWD) modules
- 编写模块时的声明(含MODULE_LICENSE等)
- python win7 win10_Python如何获取Win7,Win10系统缩放大小
- Tiktok培训可以去学习吗?
- 跨境电商ERP是什么?
- Leetcode每日一题:70.climbing-stairs(爬楼梯)
- 函数二的变量作用域,多函数执行,返回值,函数参数,拆包,引用
- x的奇幻之旅 (史蒂夫·斯托加茨 著)