Linux Keepalived 高可用虚拟IP安装与配置
安装环境
CentOS Linux release 7.6.1810
安装
yum install -y keepalived
安装完成后可输入命令查看安装文件位置
rpm -ql keepalived
高可用架构
我们在两台负载均衡机器上分别部署haproxy和keepalived,从而通过VIP(虚拟IP)实现Haproxy的高可用。我们现在有两台虚拟机,它们的IP地址分别为:10.0.2.4 和 10.0.2.5,我们将虚拟IP定为10.0.2.101。
我们将10.0.2.4定为主服务器,将10.0.2.5定为从服务器。至于192.168.1.11-192.168.1.14代表为我们的业务服务器集群,这些可自行随意搭建。
shared IP=10.0.2.10110.0.2.4 10.0.2.5 192.168.1.11-192.168.1.14 192.168.1.2-------+------------+-----------+-----+-----+-----+--------+----| | | | | | _|_db+--+--+ +--+--+ +-+-+ +-+-+ +-+-+ +-+-+ (___)| LB1 | | LB2 | | A | | B | | C | | D | (___)+-----+ +-----+ +---+ +---+ +---+ +---+ (___)haproxy haproxy 4 cheap web serverskeepalived keepalived
两台虚拟机的网卡配置如下:
[root@myrep keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 08:00:27:db:d7:18 brd ff:ff:ff:ff:ff:ffinet 10.0.2.5/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3valid_lft 711sec preferred_lft 711secinet6 fe80::9ee4:2e79:94a4:5b9d/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft foreverinet6 fe80::b6e9:4155:d662:62c1/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@mymaster keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 08:00:27:14:bb:b9 brd ff:ff:ff:ff:ff:ffinet 10.0.2.4/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3valid_lft 1198sec preferred_lft 1198secinet6 fe80::9ee4:2e79:94a4:5b9d/64 scope link noprefixroute valid_lft forever preferred_lft forever
来源:haproxy/architecture.txt
关于Haproxy的安装与配置可参考本人另一篇文章:
https://blog.csdn.net/qq0012520/article/details/96377319
配置Keepalived
修改配置文件可先将文件备份一份:
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
然后编辑配置文件
vi /etc/keepalived/keepalived.conf
完整的配置文件如下(两台服务器的配置基本相同):
! Configuration File for keepalivedglobal_defs {notification_email {xxxx@163.com}notification_email_from xxxx@163.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}#用来来检查haproxy进程是否存活的脚本,系统中没有 killalll 命令的话需要先安装相关软件
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 script "killall -0 haproxy" # cheaper than pidofinterval 2 # check every 2 secondsweight 2 # add 2 points of prio if OK
}vrrp_instance VI_1 {state MASTER #!从服务器为 BACKUPinterface enp0s3 # 与你的网卡名称对应virtual_router_id 51priority 101 #!主服务器为101,从服务器为100virtual_ipaddress {10.0.2.101 #虚拟IP地址}track_script {chk_haproxy}
}
添加防火墙规则:
如果不添加防火强规则,则两台keepalived机器不能互相通信,就不能实现其功能。
1.在10.0.2.4机器上添加规则,让其信任10.0.2.5机器。
firewall-cmd --add-source=10.0.2.5 --zone=trusted --permanent
firewall-cmd --reload
2.在10.0.2.5机器上添加规则,让其信任10.0.2.4机器
firewall-cmd --add-source=10.0.2.4 --zone=trusted --permanent
firewall-cmd --reload
分别启动两台机器上的keepalived 服务:
在两台机器上执行如下命令:
systemctl start keepalived
执行完命令后发现当前虚拟IP正在主机器上:
测试:
在主机器上执行:
systemctl stop keepalived
发现虚拟IP漂移到了从机器上,表示功能OK:
测试完成后再次启动主机器上的keepalived:
systemctl start keepalived
配置Haproxy
我的两台http业务服务是部署在宿主机上的,通过虚拟机(VirtualBox)的NAT网络功能使得虚拟机内可通过192.168.56.1这个IP在访问宿主机,并且两台虚拟机之间可以互相访问(在同一个NAT网络下)。
我会将两台机器上的Haproxy都绑定在同一个VIP上,两台机器上的配置是一样的,如下:
globallog 127.0.0.1 local2chroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/statsdefaultsmode httplog globaloption httplogoption dontlognulloption http-server-closeoption forwardfor except 127.0.0.0/8option redispatchretries 3timeout http-request 10stimeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout http-keep-alive 10stimeout check 10smaxconn 3000frontend main 10.0.2.101:5000acl url_static path_beg -i /static /images /javascript /stylesheetsacl url_static path_end -i .jpg .gif .png .css .jsuse_backend static if url_staticdefault_backend appbackend staticbalance roundrobinserver static 127.0.0.1:4331 checkbackend appbalance roundrobinserver app1 192.168.56.1:7100 check #绑定到宿主机7100端口的服务上server app2 192.168.56.1:7200 check #绑定到宿主机7200端口的服务上listen stats #配置监控功能mode httpbind 10.0.2.101:21000stats enablestats hide-versionstats refresh 5sstats uri /haproxyadmin?statsstats realm Haproxy\ Statisticsstats auth admin:123456stats admin if TRUE
启动Haproxy
注意: 由于我们两台机器都是绑定到 10.0.2.101:5000 这个虚拟地址来监听入站连接,因为一个(虚拟)IP同一时间只能存在于某一台机器上(如上面演示),而haproxy在启动的时候必须要求能成功绑定到该地址,所以会造成无法启动的情况,解决方法是让系统允许绑定非本机的IP,:
两台机器上执行如下命令:
sysctl net.ipv4.ip_nonlocal_bind=1
然后分别在两台机器上执行启动:
systemctl start haproxy
测试
用例流程:
1 . 正常情况下主服务器处理入站请求,而当主服务器挂掉或者服务器上的Haproxy停止后,VIP漂移到从服务器,由从服务器接收请求。
2 . 当主服务器从故障中恢复后,VIP再次漂移回主服务器,由主服务器接收请求。先多启动两个终端窗口用来监控haproxy日志:
分别在两机器上输入监控命令如下:
tail -f /var/log/haproxy.log
在浏览器上访问服务:
主机器日志输入,表示访问成功:
这时候停掉主机器上的Haproxy
systemctl stop haproxy
再次访问服务发现依然成功,而请求被从机器接收
再次启动主机器上的Haproxy
systemctl start haproxy
这时候服务又被主机器处理
Linux Keepalived 高可用虚拟IP安装与配置相关推荐
- [配置]keepalived配置高可用虚拟IP不通
问题:在keepalived配置的虚拟IP不通 解决:先检查虚拟IP和nginx服务器是不是一个网段,然后检查是否将vrrp_strict这个信息给注释掉.
- 基于zookeeper(集群)+LevelDB的ActiveMq高可用集群安装、配置、测试
Linux 环境 zookeeper集群安装.配置.测试https://blog.csdn.net/weixin_40816738/article/details/100576259 MQ集群部署规划 ...
- 高可用HAProxy——yum安装部署配置使用
HAProxy介绍 HAProxy是高性能TCP(第四层)/HTTP(第七层)反向代理负载均衡服务器.(The Reliable, High Performance TCP/HTTP Load B ...
- keepalived 高可用日志说明及实战配置日志路径
日志文件查看 tail -f /var/log/message 修改日志路径 vi /etc/sysconfig/keepalived KEEPALIVED_OPTIONS="-D -S 0 ...
- 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
企业级Nginx负载均衡与keepalived高可用实战课-2678人已学习 课程介绍 企业级Nginx负载均衡与keepalived高可用实战分享 课程收益 互联网环境最常用 ...
- RabbitMQ集群安装配置+HAproxy+Keepalived高可用
RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...
- linux lnmp分布式集群,LNMP 分布式集群(六):keepalived 高可用方案
前言 LNMP 分布式集群的部署实践 系列文章: 衡量一个集群的高可用性在于没有单点故障,即其中任何一台服务器宕机都不会造成整个服务中断. 之前的LNMP分布式集群的实践中,显然在将Nginx作为负载 ...
- linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 830 ...
- LVS+Keepalived实现高可用的ip负载均衡
LVS+Keepalived实现高可用的ip负载均衡 封装rhel7.6的母盘 LVS负载均衡技术 RS中服务机对外屏蔽vip的俩种设置方法 RS设置之使用arptables_jf软件详解 数据链路层 ...
- LVS-DR+Keepalived 高可用群集
LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法 Keepalived 1.支持故障自动切换(Failover) 2.支持节点健康状态检查 ...
最新文章
- PDO防注入原理分析以及使用PDO的注意事项 (转)
- 算法-二叉树的最近公共祖先
- php 科研,科研之路2
- 阿里云Java虚拟机的安装位置
- POJ1269 Intersecting Lines 计算几何 C语言
- nginx php pathinfo,Nginx解决PATH_INFO新解决办法
- consul代理---健康检测
- 文章读后感--社会文明分析总结
- Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.6 给自动检测组件命名...
- 理解Python的协程机制-Yield
- 物理增强的深度学习模型改善卫星图像对热带气旋强度和大小估计(翻译)
- 蓝色动力(DVD版)GHOSTXP SP3纯净选择版V2012.06
- 简单典型二阶系统_关于石墨烯结构的典型拉曼光谱特征,这一篇讲得非常透彻!...
- python按顺序执行函数_Python3的unittest用例按编写顺序执行
- php后门 佛像,给千年佛像做了个CT,结果好吓人
- 充电头PD协议和QC协议的理解
- iOS10 更新后问题,获取相册,录音时候闪退问题
- 简易留言薄系统-ASP.NET MVC(Model层)
- 熊绎:我看软件工程师的职业规划
- Android仿搜狗浏览器加载动画
热门文章
- 深度学习 Fine-tune 技巧总结
- 如何利用python整合excel_一篇文章告诉你如何利用python实施自动化办公,操作Excel...
- 通用计算机dsp采用,一种基于FPGA+DSP的通用飞控计算机平台设计
- 搭建自己的病毒扫描系统clamav-原版教程
- vscode调试时如何在launch.json中添加环境变量
- c语言gcno文件位置,c – 找不到CMake和lcov:gcno文件
- oracle trunc delete 有什么区别,oracle的trunc与round区别及处理日期和数值的区别
- python怎么重新运行,如何让python程序重新运行其
- windows下USB检测插拔状态
- c语言程序 题库管理,C语言程序设计题库管理.doc