keepalived高可用使用案例
1、keepalived实现IP地址的高可用
测试环境
serverA:
eth0:192.168.10.11eth1:192.168.170.6
serverB:
eth0:192.168.10.12eth1:192.168.178.7
目的
实现192.168.10.11这个地址的高可用
步骤
1、安装keepalived
在主机和备用机分别安装keepalived
sudo apt-get install keepalived
2、创建监测和切换脚本
分别是chk_apache.sh、ip_master.sh和ip_backup.sh三个脚本。
ip切换脚本ip_master.sh和ip_backup.sh中的网卡配置文件请根据实际情况进行配置。
serverA:
root@ubuntu:/etc/keepalived# more scripts/chk_apache.sh
#!/bin/bashPORT=`netstat -nap |grep "LISTEN" |grep "8088" |awk '{print $4}' |cut -d: -f2`if [ $PORT == '8088' ]
then
echo "apache is running ..."
exit 0
else
echo "apache is down!"
/etc/init.d/keepalived stop
/sbin/ifdown eth0
exit 1
fi
root@ubuntu:/etc/keepalived# more scripts/ip_master.sh
#!/bin/bashcp /etc/network/interfaces.master /etc/network/interfaces/sbin/ifdown eth0
/sbin/ifup eth0
root@ubuntu:/etc/keepalived# more scripts/ip_backup.sh
#!/bin/bash#cp /etc/network/interfaces.master /etc/network/interfaces/sbin/ifdown eth0
#/sbin/ifup eth0
serverB:
root@ubuntu:/etc/keepalived# more scripts/chk_apache.sh
#!/bin/bashPORT=`netstat -nap |grep "LISTEN" |grep "8088" |awk '{print $4}' |cut -d: -f2`if [ $PORT == '8088' ]
then
echo "apache is running ..."
exit 0
else
echo "apache is down!"
/etc/init.d/keepalived stop
/sbin/ifdown eth0
exit 1
fi
root@ubuntu:/etc/keepalived# more scripts/ip_master.sh
#!/bin/bashcp /etc/network/interfaces.master /etc/network/interfaces/sbin/ifdown eth0
/sbin/ifup eth0
root@ubuntu:/etc/keepalived# more scripts/ip_backup.sh
#!/bin/bashcp /etc/network/interfaces.backup /etc/network/interfaces/sbin/ifdown eth0
/sbin/ifup eth0
3、配置keepalived.conf
分别在主机和备机上创建配置文件/etc/keepalived/keepalived.conf ,具体配置类似如下:
serverA:
root@ubuntu:/etc/keepalived# more keepalived.conf
vrrp_script chk_apache {script "/etc/keepalived/scripts/chk_apache.sh"
interval 2
}vrrp_instance VI_1 {state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {auth_type PASS
auth_pass 1111
}
#virtual_ipaddress {# 192.168.0.221/24
#}track_script {chk_apache
}notify_master /etc/keepalived/scripts/ip_master.sh
notify_backup /etc/keepalived/scripts/ip_backup.sh
}
serverB:
root@ubuntu:/etc/keepalived# more keepalived.conf
vrrp_script chk_apache {script "/etc/keepalived/scripts/chk_apache.sh"
interval 2
}vrrp_instance VI_1 {state BACKUP
interface eth1
virtual_router_id 51
priority 50
advert_int 1
authentication {auth_type PASS
auth_pass 1111
}
#virtual_ipaddress {# 192.168.0.221/24
#}track_script {chk_apache
}notify_master /etc/keepalived/scripts/ip_master.sh
notify_backup /etc/keepalived/scripts/ip_backup.sh
}
4、测试
关闭serverA的keepalived进程或者关闭apache服务进行测试,serverB切换成主服务器;
先后开启serverA的apache服务和keepalived服务,serverA切换成主服务器,serverB切换成备服务器。
2、keepalived实现nginx高可用
环境两台Ubuntu 14.04 server 64bit
ip:192.168.1.235 master
ip:192.168.1.234 back
vip:192.168.1.233
两台机器都安装keepalived
aptitude updateaptitude install -y keepalived
aptitude install -y nginx
master上面进行创建
该脚本检测ngnix的运行状态,并在nginx进程不存在时尝试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。
cat /etc/keepalived/check_nginx.sh#!/bin/bashcounter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then/etc/init.d/nginx startsleep 2counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then/etc/init.d/keepalived stopfifi
cat /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {notification_email {no_reply@cyyun.comlaoyw@cyyun.com}notification_email_from laoyw@cyyun.comsmtp_server mail.cyyun.comsmtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_script chk_nginx {# script "killall -0 nginx"script "/etc/keepalived/check_nginx.sh"interval 2weight -5fall 3 rise 2
}vrrp_instance VI_1 {state MASTERinterface eth0mcast_src_ip 192.168.1.235virtual_router_id 49priority 101advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.233}track_script {chk_nginx}
}
back 服务器上面配置
该脚本检测ngnix的运行状态,并在nginx进程不存在时尝试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。
cat /etc/keepalived/check_nginx.sh#!/bin/bashcounter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then/etc/init.d/nginx startsleep 2counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then/etc/init.d/keepalived stopfificat /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {notification_email {no_reply@cyyun.comlaoyw@cyyun.com}notification_email_from laoyw@cyyun.comsmtp_server mail.cyyun.comsmtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_script chk_nginx {# script "killall -0 nginx"script "/etc/keepalived/check_nginx.sh"interval 2weight -5fall 3 rise 2
}vrrp_instance VI_1 {state BACKUPinterface eth0mcast_src_ip 192.168.1.234virtual_router_id 49priority 100advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.233}track_script {chk_nginx}
}
启动Nginx
/etc/init.d/Nginx start
启动keepalived
/etc/init.d/keepalived start
在master上面查看
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaultlink/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 hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:77:41:72 brd ff:ff:ff:ff:ff:ffinet 192.168.11.235/24 brd 192.168.1.255 scope global eth0valid_lft forever preferred_lft foreverinet 192.168.11.233/32 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe77:4172/64 scope linkvalid_lft forever preferred_lft forever
在back上面查看
#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaultlink/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 hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:b4:01:59 brd ff:ff:ff:ff:ff:ffinet 192.168.11.234/24 brd 192.168.1.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:feb4:159/64 scope linkvalid_lft forever preferred_lft forever
http://192.168.11.233即可。
3、使用apache的mod_proxy模块做tomcat热备
第一步:安装apache
注意编译的时候需要加入mod_proxy模块。
第二步:配置tomcat
分别找到需要加入负载均衡或热备的tomcat的配置文件server.xml,修改engine行,添加jvmroute。例如
如果不需要session复制,其他默认保存即可。
第三步:配置ajp_proxy
不建议使用apache的http_proxy。
找到apache虚拟机主机配置文件/usr/local/apache/conf/extra/httpd-vhost.conf,添加如下内容。这个是负载均衡配置。
ProxyRequests offHeader add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cyyun.com>
BalancerMember ajp://192.168.122.102:8009 route=node1 loadfactor=1
BalancerMember ajp://192.168.122.105:8009 route=node2 loadfactor=1
#ProxySet stickysession=JSESSIONID
ProxySet stickysession=ROUTEID
#byrequests(default),bytraffic,bybusyness
ProxySet lbmethod=bytraffic
ProxySet nofailover=On
</Proxy>ProxyPass /upload !
ProxyPass /balancer !
ProxyPass / balancer://cyyun.com/
ProxyPassReverse / balancer://cyyun.com/<Location /balancer>
SetHandler balancer-manager
Proxypass !
Order allow,deny
Allow from all
</Location><Proxy *>
Order allow,deny
Allow from all
</Proxy><Location />
Order allow,deny
Allow from all
</Location>
添加tomcat主要就是BalancerMember这行,loadfactor值越高,在负载均衡中权重就越大。负载均衡是需要考虑session的问题。
如果不需要负载均衡,使用仅仅需要热备,修改BalancerMember ajp://192.168.122.105:8009 route=node2 loadfactor=1成BalancerMember ajp://192.168.122.105:8009 route=node2 status=+H 。
参考网址:
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/
keepalived高可用使用案例相关推荐
- 案例一(haproxy+keepalived高可用负载均衡系统)【转】
1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...
- (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建
前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...
- linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 830 ...
- keepalived高可用集群。
keepalived故障切换转移原理 1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议, 2故障转移. keepalived三大功能 1实现物理 ...
- lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web
LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...
- 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群
LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...
- Nginx+Keepalived高可用集群应用实践
Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...
- keepalived高可用解决脑裂,nginx高可用配置详细篇
第一章 keepalived介绍 keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点状态,后来又加入了可以实现高可用的VRRP功能.此,keepal ...
- 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
企业级Nginx负载均衡与keepalived高可用实战课-2678人已学习 课程介绍 企业级Nginx负载均衡与keepalived高可用实战分享 课程收益 互联网环境最常用 ...
最新文章
- 2022-2028年中国商贸物流行业市场前瞻与投资战略规划分析报告
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!
- ElasticSearch入门系列(三)文档,索引,搜索和聚合
- 第七期:详解JavaScript运行机制(Event Loop)
- Anaconda安装,linux操作系统学习
- 打开QQ快捷键截屏 CTRL+ALT+A
- Android学习笔记---19_采用ListView实现数据列表显示,以及各种适配器使用,和如何写自己的适配器
- 功能三星Galaxy S2手机
- Anylogic模型搭建01:医院排队挂号模拟试验
- 斐讯盒子t1 刷Android,T1刷机的详细步骤
- 元宇宙,风口还是扯淡?
- tabbar 图片太大了怎么办_设置TabBar分栏控制器上图片的大小问题
- Rosalind工具库: Entrez搜索NCBI资源库
- LoadRunner性能测试培训大纲
- Oracle的物化视图
- 【研究生】计算机架构的新黄金时代,两位图灵奖得主最新力作
- if语句、选择语句、判断语句
- 重磅!AI与区块链技术知识分享交流会!特邀贾志刚老师、双一流211高校研究生!
- choice数据库的使用(一):如何下载数据
- 导出100万条数据到excel
热门文章
- 简历v岗位实时智能匹配算法
- u盘读写测试_aigo U395固态U盘评测,速度可能会吓到你,价格很良心
- loss函数之SoftMarginLoss
- 一篇google developer 安全介绍的翻译
- (筆記) Continuous Assignment的幾個特色 (SOC) (Verilog)
- 2018双十一苏宁20+篇技术干货全整理
- 达拉草201771010105《面向对象程序设计(java)》第十周学习总结
- 超强的用linux命令勾搭美女
- mybatis中resultType和resultMap的区别
- 常用 API 函数(7): 位图、图标和光栅运算函数