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高可用使用案例相关推荐

  1. 案例一(haproxy+keepalived高可用负载均衡系统)【转】

    1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...

  2. (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

    前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...

  3. linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例

    一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 830 ...

  4. keepalived高可用集群。

    keepalived故障切换转移原理 1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议, 2故障转移. keepalived三大功能 1实现物理 ...

  5. lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web

    LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...

  6. 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群

    LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...

  7. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  8. keepalived高可用解决脑裂,nginx高可用配置详细篇

    第一章 keepalived介绍 keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点状态,后来又加入了可以实现高可用的VRRP功能.此,keepal ...

  9. 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程

    企业级Nginx负载均衡与keepalived高可用实战课-2678人已学习 课程介绍         企业级Nginx负载均衡与keepalived高可用实战分享 课程收益     互联网环境最常用 ...

最新文章

  1. 2022-2028年中国商贸物流行业市场前瞻与投资战略规划分析报告
  2. 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!
  3. ElasticSearch入门系列(三)文档,索引,搜索和聚合
  4. 第七期:详解JavaScript运行机制(Event Loop)
  5. Anaconda安装,linux操作系统学习
  6. 打开QQ快捷键截屏 CTRL+ALT+A
  7. Android学习笔记---19_采用ListView实现数据列表显示,以及各种适配器使用,和如何写自己的适配器
  8. 功能三星Galaxy S2手机
  9. Anylogic模型搭建01:医院排队挂号模拟试验
  10. 斐讯盒子t1 刷Android,T1刷机的详细步骤
  11. 元宇宙,风口还是扯淡?
  12. tabbar 图片太大了怎么办_设置TabBar分栏控制器上图片的大小问题
  13. Rosalind工具库: Entrez搜索NCBI资源库
  14. LoadRunner性能测试培训大纲
  15. Oracle的物化视图
  16. 【研究生】计算机架构的新黄金时代,两位图灵奖得主最新力作
  17. if语句、选择语句、判断语句
  18. 重磅!AI与区块链技术知识分享交流会!特邀贾志刚老师、双一流211高校研究生!
  19. choice数据库的使用(一):如何下载数据
  20. 导出100万条数据到excel

热门文章

  1. 简历v岗位实时智能匹配算法
  2. u盘读写测试_aigo U395固态U盘评测,速度可能会吓到你,价格很良心
  3. loss函数之SoftMarginLoss
  4. 一篇google developer 安全介绍的翻译
  5. (筆記) Continuous Assignment的幾個特色 (SOC) (Verilog)
  6. 2018双十一苏宁20+篇技术干货全整理
  7. 达拉草201771010105《面向对象程序设计(java)》第十周学习总结
  8. 超强的用linux命令勾搭美女
  9. mybatis中resultType和resultMap的区别
  10. 常用 API 函数(7): 位图、图标和光栅运算函数