Keepalived & LVS: 实现web的负载均衡和高可用
目录
1. 环境介绍
2. LVS DR模型中Realserver上的准备
3. ha上的准备
4. 配置keepalived
5. 测试Realserver的切换
6. failback页面测试
7. keepalived自动切换
8. keepalived切换邮件通告
1. 环境介绍
A. 192.168.205.111 steppingstone.glinux.top steppingstone
B. 192.168.205.112 rs1.glinux.top rs1
C. 192.168.205.118 rs2.glinux.top rs2
D. 192.168.205.113 ha1.glinux.top ha1
E. 192.168.205.115 ha2.glinux.top ha2
F. alias自定义
vim /root/.bashrc
alias echop='for i in `seq 1 $COLUMNS`; do echo -n "+"; done'
alias rs='for i in {1..2}; do ssh rs$i'
alias ha='for i in {1..2}; do ssh ha$i'
2. LVS DR模型中Realserver上的准备
A. [root@steppingstone ~]# rs ' cd /proc/sys/net/ipv4/conf/; pwd'; echop; done
B. [root@steppingstone ~]# rs 'echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce'; echop; done #修改arp_announce
C. [root@steppingstone ~]# rs 'echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce'; echop; done
D. [root@steppingstone ~]# rs 'echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore'; echop; done
E. [root@steppingstone ~]# rs ' echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore'; echop; done
F. [root@steppingstone ~]# rs 'ifconfig lo:0 192.168.205.80 broadcast 192.168.205.80 netmask 255.255.255.255 up; ifconfig lo:0'; echop; done #配置vip地址
H. [root@steppingstone ~]# rs 'yum install httpd; echo "<h1>`uname -n`</h1>"> /var/www/html/index.html; service httpd restart'; echop; done #安装web服务
3. ha上的准备
A. [root@steppingstone ~]# ha 'yum install keepalived -y'; echop; done #安装keepalived
B. [root@steppingstone ~]# ha 'yum install ipvsadm -y'; echop; done #安装ipvsadm
4. 配置keepalived
A. [root@ha2 ~]# man keepalived.conf #查看帮助文档
B. [root@ha1 keepalived]# vim keepalived.conf
- ! Configuration File for keepalived
- global_defs {
- notification_email {
- #指定故障发生时通告给的邮件地址
- xxxxx@.com
- }
- #发送者信息
- notification_email_from xxxxxx@.com
- smtp_server smtp..com
- smtp_connect_timeout
- router_id LVS_DEVEL
- }
- vrrp_script chk_schedown {
- #此处可自定义检测脚本, 0表示测试成功,此处以检测是否存在改文件做测试
- script "[ -e /etc/keepalived/down ] && exit 1 || exit 0"
- #每两秒检测一次
- interval
- #如果失败, 优先级减去多少
- weight -
- #失败检测次数,失败2次才是失败
- fall
- #成功一次, 即时成功
- rise
- }
- vrrp_instance VI_1 {
- #定义vrrp虚拟路由
- state MASTER
- #定义工作的物理接口
- interface eth0
- #两台ha上的虚拟路由id要保持一致
- virtual_router_id
- #优先级要比备节点大
- priority
- advert_int
- #定义认证码
- authentication {
- #认证类型为简单字符认证
- auth_type PASS
- auth_pass keepalivedpass
- }
- #定义提供服务的虚拟ip
- virtual_ipaddress {
- 192.168.205.80/ dev eth0 label eth0:
- }
- #定义要检查的脚本
- track_script {
- chk_schedown
- }
- #定义keepalived节点转换通知
- notify_master "/etc/keepalived/keepalived_notify.sh master 192.168.205.80"
- notify_backup "/etc/keepalived/keepalived_notify.sh backup 192.168.205.80"
- notify_fault "/etc/keepalived/keepalived_notify.sh fault 192.168.205.80"
- }
- #定义vitual_server
- virtual_server 192.168.205.80 {
- delay_loop
- lb_algo rr
- lb_kind DR
- nat_mask 255.255.255.0
- #指定是否使用长连接
- #persistence_timeout
- protocol TCP
- sorry_server 127.0.0.1
- #指定realserver rs1,
- # HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK, 可分别针对于http, https, mysql, mail等进行健康状况监测
- real_server 192.168.205.112 {
- weight
- HTTP_GET {
- url {
- path /
- #http返回状态为200, 说明状态ok
- status_code
- }
- #定义超时时间
- connect_timeout
- #定义重试次数
- nb_get_retry
- delay_before_retry
- }
- }
- real_server 192.168.205.118 {
- weight
- HTTP_GET {
- url {
- path /
- #http返回状态为200, 说明状态ok
- status_code
- }
- #定义超时时间
- connect_timeout
- #定义重试次数
- nb_get_retry
- delay_before_retry
- }
- }
keepalived.conf
C. [root@ha1 keepalived]# scp keepalived.conf ha2:/etc/keepalived/ #拷贝到另一台设备上
D. [root@ha2 ~]# vim /etc/keepalived/keepalived.conf #修改ha2上的配置
#配置状态
state BACKUP
#优先级
priority 100
E. [root@steppingstone ~]# ha 'service keepalived start'; echop; done #启动服务
F. [root@steppingstone ~]# ha 'ifconfig'; echop; done #查看网卡状态
G. [root@steppingstone ~]# ha 'ipvsadm -L -n'; echop; done #查看ipvs规则
5. 测试Realserver的切换
A. [root@rs1 ~]# service httpd stop #在一台rs上停止web服务
B. [root@steppingstone ~]# ha 'ipvsadm -L -n'; echop; done
C. 通知邮件
6. failback页面测试
A. [root@steppingstone ~]# ha 'yum install httpd -y; echo "<h1>`uname -n`, RealServer is rairing!</h1>">/www/html/index.html; service httpd start'; echop; done
B. 测试
a. [root@steppingstone ~]# rs 'service httpd stop'; echop; done #停掉realserver
b. [root@steppingstone ~]# ha 'ipvsadm -L -n'; echop; done
c. [root@rs1 ~]# service httpd start
d. [root@steppingstone ~]# ha 'ipvsadm -L -n'; echop; done
7. keepalived自动切换
A. [root@ha1 ~]# touch /etc/keepalived/down #创建文件模拟测试
B. [root@ha1 keepalived]# tail /var/log/messages -f | grep Keepalived #查看日志
8. keepalived切换邮件通告
- A. [root@ha1 ~]# vim /etc/keepalived/keepalived_notify.sh #编辑邮件通知脚本, 改文件拷贝到ha2上相同位置
- #!/bin/bash
- #指定要接收的邮件的联系人
- contact=xxxxxx@163.com
- #命令帮助函数
- Usage() {
- echo "Usage: `basename $0` {master|backup|fault} VIP"
- }
- #发送邮件函数
- Notify() {
- subject="`hostname`s status changed to $1"
- mailbody="`date "+%F %T"`: `hostname`'s status change to $1, $VIP floating."
- echo $mailbody | mail -s "$subject" -r xxxxxx@163.com $contact
- }
- #判断命令使用是否正确
- [ $# -lt 2 ] && Usage && exit
- #接收到vip地址
- VIP=$2
- #判断主题
- case $1 in
- master)
- Notify master
- ;;
- backup)
- Notify backup
- ;;
- fault)
- Notify fault
- ;;
- *)
- Usage
- exit 1
- ;;
- esac
B. [root@ha1 ~]# vim /etc/keepalived/keepalived.conf #查看配置文件
vrrp_instance VI_1 {
#定义keepalived节点转换通知
notify_master "/etc/keepalived/keepalived_notify.sh master 192.168.205.80"
notify_backup "/etc/keepalived/keepalived_notify.sh backup 192.168.205.80"
notify_fault "/etc/keepalived/keepalived_notify.sh fault 192.168.205.80"
}
C. 通知邮件
Keepalived & LVS: 实现web的负载均衡和高可用的更多相关文章
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
- HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用
HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用 Ip地址划分: 240 mysql_b2 242 mysql_b1 247 haprox ...
- 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用
本文作者系:视野金服工程师 | 吴海胜 首发于 Nebula Graph 论坛:https://discuss.nebula-graph.com.cn/t/topic/1388 一.前言 本文介绍如何 ...
- net core 实战之 redis 负载均衡和"高可用"实现
net core 实战之 redis 负载均衡和"高可用"实现 1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的& ...
- dubbo服务层面上的负载均衡和高可用
dubbo上的服务层可以做集群,来达到负载均衡和高可用,很简单,只需要在不同的服务器节点上向同一个zk(内网环境)注册相同的服务 注意就是,消费者不能在同一个zk做这种集群操作的 转载请注明博客出处: ...
- asp.net core 实战之 redis 负载均衡和"高可用"实现
1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...
- Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用
上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx ...
- keepalived + haproxy 实现web 双主模型的高可用负载均衡--转
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xz159065974.blog.51cto.com/8618592/140581 ...
- 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡
环境准备: 192.168.193.80 node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...
随机推荐
- rsync配置两台服务器之间的文件备份(同步)
rsync配置两台服务器之间的文件备份(同步) 前情提要 环境: 192.168.1.2 主服务器 centos 7.7 192.168.1.3 备份服务器 centos 7.7 rsync 安装(两 ...
- 不只是安装,Kolla 让 OpenStack 运维变简单
使用 kolla 部署的 OpenStack 环境和传统直接安装的环境相比较,因为使用了全容器化部署,基本操作上有很大不同.对于初学者,操作变得更清晰和更简单了,但是如果你已经有了一定的经验,可能反而 ...
- MySQL数据库(五)插入操作
前提要述:参考书籍<MySQL必知必会> <MySQL必知必会>是先讲了查询,但是没有记录就无法查询,所以先将如何添加数据. 表已经知道怎么创建了,随便创两张. 5.1 插入数 ...
- Android Studio build不显示Generate signed apk问题
如果是刚装的AS,那么新建一个项目,进入项目后,会发现build选项卡缺了一些选项,同时底部sync在转圈圈,其实是AS在自动下载gradle,也许还在下载build-tools,我等了11分钟才结束 ...
- 网络、TCP协议与UDP协议
1.网络模型 (1)什么是网络模型 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外 ...
- 灵魂画师,在线科普多云平台/CMP云管平台/中间件/虚拟化/容器是个啥
原创: 灵魂工作室 速石科技 经常碰到有人问: 你们是云管吗? 你们和CMP多云管理平台有什么区别? 你们这个多云平台到底是个啥? emmmmm,问题还挺不好回答. 为了说清楚这些问题,但又不希望你们 ...
- python暴力破解压缩包密码
啥也不说,直接上代码 #-*-coding:utf-8-*- import zipfile #生成1-999999的数字密码表, 要是有别的密码类型,对密码表改造一下就可以了,也可以上网下载某些类型的 ...
- 三、Nginx原理解析
Nginx原理解析 一.反向代理 工作流程 用户通过域名发出访问Web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址: 反向代理服务器接受用户的请求: 反向代理服务器在本地缓存中查找 ...
- SBT与Play配置文件
1. 配置文件类JSON格式,符合SCALA语法规范2. :=是最常用的方法,其作用就是将key设置成expression的值,相同的key如果被多次赋值,则后面的值会覆盖掉前面的值.适用于简单类型的 ...
- poi解析excel(含有公式)
/** * Jun 25, 2012 */ import java.io.File; import java.io.FileInputStream; import java.io.IOExceptio ...