Centos配置Keepalived_做双机热备切换
- 格式:docx
- 大小:22.99 KB
- 文档页数:9
系统环境:************************************************************两台服务器都装了 CentOS-5.2-x86_64 系统,安装了 Squid 服务。
Virtual IP : 192.168.30.20Squid1+Real Server 1 :网卡地址 (eth0):192.168.30.12Squid2+Real Server 2 :网卡地址 (eth0):192.168.30.13************************************************************软件列表:keepalived/software/keepalived-1.1.17.tar.gz openssl-develyum install openssl-devel***************************************************************配置:配置基于高可用 keepalived, 确定 LVS 使用 DR 模式1. 安装配置 keepalived1.1 安装# yum install openssl-devel ;安装 keepalived 依赖软件#ln -s /usr/src/kernels/`uname -r`-`uname -m`/ /usr/src/linux ;建立内核链接,编译 keepalived 支持 lvs 时需要#tar zxvf keepalived-1.1.17.tar.gz#cd keepalived-1.1.17#./configure --prefix=/usr --sysconf=/etcKeepalived configuration------------------------Keepalived version : 1.1.17Compiler : gccCompiler flags : -g -O2Extra Lib : -lpopt -lssl -lcryptoUse IPVS Framework : Yes ; 注意编译时一定要支持 lvsIPVS sync daemon support : YesUse VRRP Framework : YesUse LinkWatch : NoUse Debug flags : No#make#make install1.2 编辑 keepalived 配置文件#Vi /etc/keepalived/keepalived.confglobal_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址如果有多个VIP,继续换行填写}}virtual_server 192.168.30.20 80 {delay_loop 2 # 每隔 6 秒查询 realserver 状态lb_algo rr #lvs 算法lb_kind DR # Direct Routepersistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver protocol TCP # 用 TCP 协议检查 realserver 状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}1.3 BACKUP 服务器同上配置,先安装 lvs 再按装 keepalived, 仍后配置 /etc/keepalived/keepalived.conf ,只需将红色标示的部分改一下即可 .global_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址}}virtual_server 192.168.30.20 80 {delay_loop 2 # 每隔 6 秒查询 realserver 状态lb_algo rr #lvs 算法lb_kind DR # Direct Routepersistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver protocol TCP # 用 TCP 协议检查 realserver 状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}2. 配置虚地址 : vi /etc/sysconfig/network-scripts/ifcfg-lo 添加DEVICE=lo:0IPADDR=192.168.30.20NETMASK=255.255.255.255ONBOOT=yesNAME=loopback3. 关闭 RealServer 的 ARP ,或者编辑 /etc/sysctl.conf, 修改系统变量net.ipv4.conf.eth0.arp_ignore=1net.ipv4.conf.eth0.arp_announce=1net.ipv4.ip_forward = 1#sysctl –p :使配置生效4. 启动 keepalived 服务#service httpd start#/etc/init.d/keepalived start查看keepalived的安装位置:# find / -name keepalived将keepalived作为服务添加到chkconfig中,并设置开机启动# chkconfig --add keepalived# chkconfig --level 35 keepalived on# chkconfig --list keepalivedkeepalived 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭“各等级”包括2、3、4、5等级等级0表示:表示关机等级1表示:单用户模式等级2表示:无网络连接的多用户命令行模式等级3表示:有网络连接的多用户命令行模式等级4表示:不可用等级5表示:带图形界面的多用户模式等级6表示:重新启动5. 测试 lvs 服务是否正常5.1 通过浏览器访问http://192.168.30.20是否正常多次刷新浏览器,在主 LVS 上看连接数变化5.2 停止主 LVS 上的 keepalived 看看备份 keepalived 是否正常接管服务注:realserver如果为windows主机的话需要安装microsoft loopback,设置IP为VIP 确认之后搜索注册表,关键字"VIP"把搜到结果的每项里面的subnet mask都改成255.255.255.255然后重启即可。
详解centos7中配置keepalived⽇志为别的路径keepalived 安装:cd <keepalived_sourcecode_path>./configure --prefix=/usr/local/keepalivedmake && make installmkdir /etc/keepalivedmkdir /etc/keepalived/scriptscp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/cp /root/keepalived-2.0.6/keepalived/etc/init.d/keepalived /etc/init.d/cp /usr/local/keepalived/sbin/keepalived /sbin/keepalivedcp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/chmod +x /etc/init.d/keepalived由于在默认状态下keepalived的⽇志会写⼊到/var/log/message中,我们需要将此剥离出来。
在centos 6下可以:(1)⾸先修改/etc/sysconfig/keepalived⽂件,注释掉如下,添加如下:#KEEPALIVED_OPTIONS="-D"KEEPALIVED_OPTIONS="-D -d -S 0"(2)其次修改 /etc/rsyslog.conf ⽂件,添加如下:local0.* /var/log/keepalived.log在centos 7 下,还需要修改/lib/systemd/system/keepalived.service ⽂件:centos 7使⽤。
有两台服务器如何做双机热备双机热备是一种常见的服务器配置方式,可以提高系统的可用性和容错性。
通过配置两台服务器,当其中一台服务器出现故障时,另一台服务器可以立即接管工作,确保系统的连续性和稳定性。
本文将介绍如何进行双机热备配置,以及配置过程中需要注意的问题。
一、双机热备的基本原理双机热备的基本原理是将两台服务器配置为主备关系。
其中一台服务器作为主服务器(Master),负责处理用户请求和业务逻辑;另一台服务器作为备服务器(Backup),处于待命状态,等待接管主服务器的工作。
主备服务器之间通过网络进行通信,保持数据的同步和一致性。
二、双机热备的配置步骤1. 确定主备服务器的角色和IP地址:首先需要确定哪台服务器将担任主服务器,以及每台服务器的IP地址。
主服务器通常配置为具备更高性能的服务器,而备服务器则配置为相对较低性能的服务器。
2. 安装并配置操作系统:在两台服务器上安装并配置相同版本的操作系统,确保操作系统的版本和配置相同,以保证数据的一致性。
常见的操作系统包括Windows Server和Linux等。
3. 安装并配置数据库和应用程序:根据实际需求,在主备服务器上安装并配置相同版本的数据库和应用程序。
数据库和应用程序的版本、配置和数据结构需要保持一致,以确保数据的同步和一致性。
4. 配置网络和通信:配置主备服务器之间的网络和通信,确保主备服务器可以相互通信并进行数据同步。
可以使用局域网(LAN)或广域网(WAN)进行通信,常见的网络通信协议包括TCP/IP等。
5. 配置双机热备软件:选择并安装适用于双机热备的软件,常见的软件包括Heartbeat、Keepalived和Pacemaker等。
这些软件可以监控主服务器的运行状态,一旦主服务器发生故障,备服务器可以立即接管。
6. 测试和验证:在配置完成后,进行测试和验证,确保主备服务器能够正常工作。
可以模拟主服务器宕机的情况,观察备服务器是否能够顺利接管,并能够继续处理用户请求和业务逻辑。
双机热备解决方案简介双机热备是一种常见的高可用性解决方案,通过在两台服务器之间进行数据同步和状态同步,实现在主服务器故障时快速切换到备服务器,从而确保系统的持续可用性。
在本文档中,将介绍双机热备的原理、实施步骤和常见问题解决方案。
原理双机热备的原理是将主服务器和备服务器通过网络连接起来,通过定期同步数据和状态,以便备服务器能够准确地为主服务器提供备份服务。
当主服务器出现故障时,备服务器将立即接管主服务器的工作,并提供相同的服务,以保证系统的可用性。
具体的原理如下: 1. 主服务器和备服务器通过一个交换机或路由器进行网络连接。
2. 定期将主服务器的数据和状态同步到备服务器上,可以使用文件同步工具、数据库复制等技术实现。
3. 备服务器处于待命状态,随时可以接管主服务器的服务。
4. 当主服务器出现故障时,备服务器立即接管主服务器的服务,并通知管理员进行处理。
实施步骤要实施双机热备解决方案,需要进行以下步骤:步骤一:选取适合的硬件设备为了实现双机热备,首先需要选取适合的硬件设备,例如服务器、网络交换机等。
这些硬件设备应具备高可靠性和性能。
步骤二:配置网络环境在选取合适的硬件设备后,需要配置网络环境。
主服务器和备服务器应通过可靠的网络连接起来,并保证网络延迟较低和带宽较大,以确保数据和状态的快速同步。
步骤三:选择并配置数据同步及状态同步方式选择和配置合适的数据同步和状态同步方式是双机热备的关键。
可以根据具体需求选择文件同步工具、数据库复制等技术来实现数据和状态的同步。
步骤四:验证双机热备方案在配置完数据同步和状态同步后,需要进行验证双机热备方案是否生效。
可以通过模拟主服务器故障的方式来验证备服务器是否能够成功接管主服务器的服务。
步骤五:监控和管理备服务器在双机热备方案生效后,需要对备服务器进行监控和管理。
通过实时监控备服务器的状态和性能,及时发现和解决问题,确保备服务器的可靠性和可用性。
常见问题解决方案在实施双机热备方案过程中,可能会遇到一些常见的问题。
centos7安装配置LVS+keepalived⾼可⽤Centos7-Lvs+Keepalived架构LVS+Keepalived介绍1 、 LVSLVS 是⼀个开源的软件,可以实现 LINUX 平台下的简单负载均衡。
LVS 是 Linux Virtual Server 的缩写,意思是 Linux 虚拟服务器。
⽬前有三种 IP 负载均衡技术( VS/NAT 、 VS/TUN 和 VS/DR );⼋种调度算法( rr,wrr,lc,wlc,lblc,lblcr,dh,sh )。
2 、 keepalivedKeepalived 是运⾏在 lvs 之上,是⼀个⽤于做双机热备( HA )的软件,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提⾼系统的可⽤性。
运⾏原理keepalived 通过选举(看服务器设置的权重)挑选出⼀台热备服务器做 MASTER 机器, MASTER 机器会被分配到⼀个指定的虚拟 ip ,外部程序可通过该 ip 访问这台服务器,如果这台服务器出现故障(断⽹,重启,或者本机器上的 keepalived crash 等), keepalived 会从其他的备份机器上重选(还是看服务器设置的权重)⼀台机器做 MASTER 并分配同样的虚拟 IP ,充当前⼀台 MASTER 的⾓⾊。
选举策略选举策略是根据,完全按照权重⼤⼩,权重最⼤( 0 ~ 255 )的是 MASTER 机器,下⾯⼏种情况会触发选举。
1. keepalived 启动的时候;2. master 服务器出现故障(断⽹,重启,或者本机器上的 keepalived crash 等,⽽本机器上其他应⽤程序 crash 不算);3. 有新的备份服务器加⼊且权重最⼤。
配置实例lvs_vip : 172.16.10.188lvs1+keepalived 主: 172.16.10.102lvs2+keepalived 备: 172.16.10.142nginx1 : 172.16.10.162nginx2 : 172.16.10.167安装 ipvsadm 和 keepalived# yum -y install ipvsadm keepalived修改 keepalived 主的配置# vim/etc/keepalived/keepalived.confglobal_defs{notification_email{******@ #报警接收⼈,多个写多⾏}notification_email_from ******@ #报警发件⼈smtp_server #发送email时使⽤的smtp服务器地址smtp_connect_timeout 30 #smtp超时时间router_id LVS1 #表⽰运⾏keepalived服务器的⼀个标识,发邮件时显⽰在邮件主题的信息}#不使⽤SYNCGroup的话,如果路由有2个⽹段,⼀个内⽹,⼀个外⽹,每个⽹段开启⼀个VRRP实例,假设VRRP配置为检查内⽹,那么当外⽹出现问题时,VRRP会认为⾃⼰是健康的,则不会发送Master和Backup的切换,从⽽导致问题,SyncGroup可以把两个实例都放⼊SyncGroup,这样的话,Group⾥任何⼀个实例出现问题都会发⽣切换vrrp_sync_grouptest {group{loadbalance}}vrrp_instanceloadbalance {state MASTER #指定keepalived的⾓⾊,MASTER表⽰此主机是主服务器,BACKUP表⽰此主机是备⽤服务器interface eno16777736 #指定HA监测⽹络的接⼝lvs_sync_daemon_inteface eno16777736 #负载均衡器之间的监控接⼝,类似于HA HeartBeat的⼼跳线virtual_router_id 38 #虚拟路由标识,这个标识是⼀个数字,同⼀个vrrp实例使⽤唯⼀的标识。
当前大多网站采用Linux +MYSQL+APACHE+PHP这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。
对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。
最近MYSQL AB也发布了MYSQL cluster 软件,使用与IBM DB2类似的技术。
MySQL cluster可能会是日后最理想的方案,但是从资源、可集成度方面考虑,给出一个简单实用的方案借鉴。
本文介绍的是性价比比较高的一种: 使用Heartbeat 2.0配置Linux高可用性集群,同时使用Heartbeat也可以实现简单的web集群。
二、实现原理通过Linux HA 软件heartbeat 实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP )自动漂移到另外一台服务器。
通过Mysql自身的replication 实现不同机器上多个数据库的同步整体性能此方案将会降低MYSQL 1%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。
所需硬件:安装有双网卡的配置大致相同的服务器或工作机两台一条交叉网线(用于双机对连的心跳线)Linux HA 软件heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm包软件主页:[url]/[/url]Mysql软件软件主页:[url]/[/url]安装步骤:1、安装MYSQL#cd /opt#useradd mysql -d /usr/local/mysql -s /sbin/nologin#tar -zxvf mysql-5.1.29-rc.tar.gz#cd mysql-5.1.29-rc# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=gbk--with-collation=gbk_chinese_ci --with-extra-charsets=all--with-pthread --enable-thread-safe-client --enable-assembler--without-isam --without-innodb --without-ndb-debug --with-mysqli #make && make install#/usr/local/mysql/bin/mysql_install_db //初始化数据库#chown -R mysql.mysql /usr/local/mysql/ //设置目录宿主#cp /usr/local/mysql/share/mysql/f /etc/f //复制配置文件#cp support-files/mysql.server /etc/rc.d/init.d/mysqld //设置启动文件#chmod 700 /etc/rc.d/init.d/mysqld#/usr/local/mysql/bin/mysqld_safe --user=mysql &#/etc/rc.d/init.d/mysqld start在启动mysql时报错查看日志发现以下错误:将/etc/f文件中的skip-federated注释掉即可#chkconfig --add mysqld#chkconfig --level 2345 mysqld on#ln -s /usr/local/mysql/bin/mysql /sbin/mysql#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin#mysqladmin –u root password 1q2w3e //设置root 密码#配置库文件搜索路径#echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf#ldconfig#添加/usr/local/mysql/bin到环境变量PATH中#export PATH=$PATH:/usr/local/mysql/binmysqlB也按以上的方式进行安装2、mysqlA设置设置同步数据库:在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:#mysql –u root –p1q2w3emysql> create table data(name VARCHAR(20), address VARCHAR(50), phoneVARCHAR(20));mysql>insert into data(name,address,phone) values('jhone','beijing','138000000'); mysql>select * from data;设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATIONCLIENT,RELOAD,SUPER ON *.* TO 'backup'@'10.0.0.2' IDENTIFIED BY 'qawsed';(授与从10.0.0.2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.2 IDENTIFIED BY 'qawsed';) mysql>flush privileges;修改配置文件:停止mysql服务[root@mysqlA opt]#service mysqld stop建立用于更新日志的目录,并给于mysql的权限[root@mysqlA opt]# mkdir /var/log/mysql[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/更改Mysql配置文件/etc/f[root@mysqlA opt]# vi /etc/fserver-id=1 //服务器ID号log-bin=mysql-binlog-bin=/var/log/mysql/updatelog //启用更新日志binlog-do-db=test //表示需要备份的数据库是test这个数据库replicate-same-server-idmaster-host=10.0.0.2 //指定主服务器IPmaster-user=backup //指定在主服务器上可以同步的帐号master-password=qawsed //指定帐号对应的密码master-connect-retry=60 //断点重试间隔为60秒replicate-do-db=test //表示同步test数据库binlog-ignore-db=mysql //不同步mysql数据库把test进行备份[root@mysqlA opt]# service mysqld start //先启动mysql[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql[root@mysqlA opt]#scp test.sql root@10.0.0.2:/opt //(将test.sql 复制到mysqlB的/opt目录下)至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB设置mysqlB设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATIONCLIENT,RELOAD,SUPER ON *.* TO 'backup'@'10.0.0.1' IDENTIFIED BY 'qawsed';(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.1 IDENTIFIED BY 'qawsed';) mysql>flush privileges;修改配置文件:停止mysql服务[root@mysqlA opt]#service mysqld stop建立用于更新日志的目录,并给于mysql的权限[root@mysqlA opt]# mkdir /var/log/mysql[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/更改Mysql配置文件/etc/f[root@mysqlA opt]# vi /etc/fserver-id=2 //服务器ID号log-bin=mysql-binlog-bin=/var/log/mysql/updatelog //启用更新日志binlog-do-db=test //表示需要备份的数据库是test这个数据库replicate-same-server-idmaster-host=10.0.0.1 //指定主服务器IPmaster-user=backup //指定在主服务器上可以同步的帐号master-password=qawsed //指定帐号对应的密码master-connect-retry=60 //断点重试间隔为60秒replicate-do-db=test //表示同步test数据库binlog-ignore-db=mysql //不同步mysql数据库还原从mysqlA备份过的test.sql#service mysqld start# mysql -u root -p1q2w3e test <test.sql重启两边的mysql服务查询配置Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.在Mysql中可通过以下命令来查看主从状态show master status 查看master状态show slave status 查看slave状态show processlist G 查看当前进程stop slave 暂时停止slave进程start slave 开始slave进程在primary服务器上MySQL命令符下输入:mysql>show master status;mysql>show slave status\G;如果出现以错误:解决办法:在/etc/f 的[mysqld]下面加上replicate-same-server-id 参数到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上安装配置heartbeat:Heartbeat下载地址如下:[url]/repositories/server:/ha-clusterin g:/lha-2.1/CentOS_5/i386/[/url]下载对应的版本,在此我的系统是centos 5.2rpm -ivh libnet-1.1.2.1-2.1.i386.rpmrpm -ivh heartbeat-pils-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-stonith-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-devel-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-ldirectord-2.1.4-2.1.i386.rpmrpm -ivh ipvsadm-1.24-8.1.i386.rpm配置HA的各配置文件:复制配置文件[root@mysqlA opt]# cp/usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/[root@mysqlA opt]# cp/usr/share/doc/packages/heartbeat/haresources /etc/ha.d/[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/配置心跳的加密方式:authkeys[root@mysqlA opt]#vi /etc/ha.d/authkeys#如果使用双机对联线(双绞线),可以配置如下:auth 11 crc#存盘退出,然后[root@mysqlA opt]#chmod 600 authkeys配置心跳的监控:haresources[root@mysqlA opt]#vi /etc/ha.d/haresources#各主机这部分应完全相同。
Nginx+keepalived+heartbeat双机热备份配置手册正文目录1 双机热备简介 (3)2 双机热备安装与配置 (4)2.1 安装环境和软件版本说明 (4)2.2 系统安装 (4)2.3 JDK环境安装配置 (4)2.4 MYSQL安装配置 (6)2.4.1 基本安装配置 (6)2.4.2 数据库双机互备 (7)2.5 反向代理服务器NGINX的安装配置 (9)2.6 KEEPALIVED安装配置 (13)2.7 HEARTBEAT的安装配置 (15)2.8 APACHE-TOMCAT安装配置 (18)3 CENTOS下安装配置的改动 (20)3.1 NGINX (20)3.2 KEEPALIVED (23)3.3 HEARTBEAT (26)3.4 添加SHELL脚本 (29)1 双机热备简介双机热备及负载均衡配置图如下所示2 双机热备安装与配置2.1 安装环境和软件版本说明系统:Linux Ubuntu 10.10JDK环境:jdk-6u31-linux-i586方向代理服务器Nginx:nginx-0.7.67探测服务器状态软件Keepalived:keepalived-1.1.17Web服务器:Apache-tomcat:apache-tomcat-6.0.35数据库MySQL:mysql-5.1.612.2 系统安装2.3 JDK环境安装配置1 、安装jdk 程序最新版本jdk: jdk-6u31-linux-i586.bin进入usr 目录: cd /usr在当前目录创建目录java : mkdir java将jdk 安装文件复制到java 目录下:cp /usr/software/ jdk-6u31-linux-i586.bin /usr/java给安装程序赋予权限:chmod +x jdk-6u31-linux-i586.bin 执行安装命令:./ jdk-6u31-linux-i586.bin安装成功后,在java 目录下会出现jdk1.6.0_31 的目录。
Keepalived双机热备(LVS+Keepalived高可用性群集)一,根据实验要求规划网络拓扑。
注:根据实验要求搭建网络拓扑,具体规划如图。
二,配置Keepalived双机热备主(备)服务器。
注:安装相关支持软件包,编译安装Keepalind。
主配置文件在/etc/keepalived/keepalived.conf注:配置主Keepalived服务器。
Notification_email 是邮件相关信息,以邮件的方式向管理员发送程序相关的信息,这里可以不做修改。
Router_id本服务器的名称。
Vrrp_instance 定义一个实例。
State 热备状态MASTER为主,SLAVE为备份。
Interface 承载VIP地址的物理接口。
Virtual_router_id 虚拟服务器的ID号,一个实例中的所有服务器的Virtual_router_id要保持一致。
Priority 优先级,最高为100。
Advert_int 通告时间间隔(秒)。
Authentication 认证方式,同一个实例的个服务器要保持一致。
Virtual_ipaddress漂移地址(VIP)。
注:备份(热备)服务器的配置,需要修改的地方有本服务器名称,热备状态和优先级。
(这里使用的是eth5网卡)注:在主(热备)服务器上可以查看到VIP。
注:备份(热备)服务器上面查看不到VIP。
三,搭建WEB服务器。
注:搭建两台WEB服务器,IP分别为192.168.1.4和192.168.1.5。
四,部署LVS+Keepalived高可用性群集。
注:修改内核参数,群集相关请参考“LVS负载均衡群集”。
注:修改Keepalived服务器配置,添加虚拟web服务器(主备服务器的配置一样即可)。
Virtual_server 虚拟服务器IP(即VIP)lb_algo 负载调度算法。
Lb_kind群集类型。
Real_server指定真实WEB服务器IP及服务(端口号)。
linux keepalived vip 切换原理
Keepalived是一个高可用性的解决方案,它使用虚拟IP(VIP)
来实现在多个服务器之间进行故障转移。
当一台服务器宕机或者出现
故障时,其他服务器会自动接管其VIP,继续提供服务。
在这个过程中,Keepalived会实时监控服务器的状态,并根据预设的规则和策略进行
故障转移。
其切换原理如下:
1.主备切换:
每个Keepalived设备都有一个VIP,其中有一个设备被配置为主设备,另一个被配置为备份设备。
2.VRRP路由守护进程:
它是一个由Keepalived执行的进程,用于检查VIP和备用服务
器是否正常运行。
3.活动和备用VRRP路由守护进程的切换:
当主设备宕机时,VIP将从主设备移动到备用设备,VRRP路由守
护进程自动从主设备切换到备用设备。
4. ARP劫持:
当备用设备被提拔为主设备时,它会通过广播ARP请求来更改网
络拓扑,将VIP的MAC地址与其IP地址进行映射。
其他设备在收到这
个ARP请求后会更新自己的缓存,确保能够正确访问VIP。
5.恢复:
一旦主设备回到正常状态,它将重新接手原本的VIP和VRRP路
由守护进程。
这个过程将自动进行,不会对系统造成任何停机时间。
综上所述,Keepalived的VIP切换原理是基于VRRP路由协议、ARP劫持和后台进程监控等技术实现的。
它可以高效、快速地实现服务器的故障转移,确保系统的高可用性和稳定性。
keepalived双机热备nginx的配置⽅法nginx⽬前是我最常⽤的反向代理服务,线上环境为了能更好的应对突发情况,⼀般会使⽤keepalived双机热备nginx或者使⽤docker跑nginx集群,keepalived是⽐较传统的⽅式,虽然⽤docker跑nginx集群更⽅便,但传统的⽅式总是有他的可取之处,并且多学⼀些东西也很好。
以后也会写如何使⽤docker跑nginx集群。
环境准备: 2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119配置keepavlived 分别在105和118上安装keepalivedyum install keepalived 准备⼼跳⾓本 keepalived的配置相当灵活,可以定时执⾏⾓本命令,⽤于⼼跳检查,⽐如,我们访问nginx发现nginx不可访问时,就关闭keepalived,从⽽切换到从nginx来实现不间断的服务⽀持。
vi /etc/keepalived/keepalived.conf#!/bin/bashcount=0for (( k=0; k<2; k++ ))docheck_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost:81 -o /dev/null )if [ "$check_code" != "200" ]; thencount=count +1continueelsecount = 0breakfidoneif [ "$count" != "0" ]; thenkillall keepalivedexit 1elseexit 0fi 设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置⽂件差不太多vi /etc/keepalived/keepalived.conf 118机器keepalived的配置⽂件! Configuration File for keepalivedvrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh" # ⼼跳检测⾓本interval 2 #脚本执⾏间隔,每2s检测⼀次weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回⾮0)则优先级 -5fall 3 #检测连续2次失败才算确定是真失败。
Centos7中安装和配置nginx和keepalived(主从模式)系统版本 Centos7IP:192.168.0.3 MasterIP:192.168.0.4 Slave⼀.Linux安装nginx (主从都安装NGINX)1.安装依赖[root@Master ~]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel[root@Slave ~]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.创建⼀个⽂件夹[root@Master ~]# cd /usr/local[root@Master local]# mkdir nginx[root@Master local]# cd nginx/[root@Master nginx]#[root@Slave ~]# cd /usr/localYou have new mail in /var/spool/mail/root[root@Slave local]# mkdir nginx[root@Slave local]# cd nginx/[root@Slave nginx]#4.编译并make[root@Master nginx]# cd nginx-1.16.1[root@Master nginx-1.16.1]# ./configure --prefix=/usr/local/nginx[root@Master nginx-1.16.1]# make[root@Master nginx-1.16.1]# make install修改nginx访问界⾯html[root@Master nginx-1.16.1]# cd /usr/local/nginx/html/You have new mail in /var/spool/mail/root[root@Master html]# lltotal 8-rw-r--r-- 1 root root 494 Oct 12 03:23 50x.html-rw-r--r-- 1 root root 612 Oct 12 03:23 index.html[root@Master html]# vi index.html<p><em>Master ip:192.168.0.3</em></p>[root@Slave nginx]# cd nginx-1.16.1[root@Slave nginx-1.16.1]# ./configure --prefix=/usr/local/nginx[root@Slave nginx-1.16.1]# make[root@Slave nginx-1.16.1]# make install修改nginx访问界⾯html[root@Slave nginx-1.16.1]# cd /usr/local/nginx/html/You have new mail in /var/spool/mail/root[root@Slave html]# lltotal 8-rw-r--r-- 1 root root 494 Oct 12 03:23 50x.html-rw-r--r-- 1 root root 612 Oct 12 03:23 index.html[root@Slave html]# vi index.html<p><em>Slave ip:192.168.0.4</em></p>常⽤命令#启动/usr/local/nginx/sbin/nginx#修改配置⽂件重新加载/usr/local/nginx/sbin/nginx -s reload#关闭/usr/local/nginx/sbin/nginx2.安装相关依赖,有不⽤下载了[root@Master local]# yum install -y gcc openssl-devel popt-devel[root@Slave local]# yum install -y gcc openssl-devel popt-devel3.编译安装[root@Master local]# cd keepalived-1.4.2[root@Master keepalived-1.4.2]# ./configure --prefix=/usr/local/keepalived[root@Master keepalived-1.4.2]# make[root@Master keepalived-1.4.2]# make install[root@Slave local]# cd keepalived-1.4.2[root@Slave keepalived-1.4.2]# ./configure --prefix=/usr/local/keepalived[root@Slave keepalived-1.4.2]# make[root@Slave keepalived-1.4.2]# make install4.相关配置,复制就完了[root@Master keepalived-1.4.2]# pwd/usr/local/keepalived-1.4.2You have new mail in /var/spool/mail/root[root@Master keepalived-1.4.2]# cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/[root@Master keepalived-1.4.2]# mkdir /etc/keepalived[root@Master keepalived-1.4.2]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/[root@Master keepalived-1.4.2]# cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [root@Master keepalived-1.4.2]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/[root@Slave keepalived-1.4.2]# pwd/usr/local/keepalived-1.4.2You have new mail in /var/spool/mail/root[root@Slave keepalived-1.4.2]# cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/[root@Slave keepalived-1.4.2]# mkdir /etc/keepalived[root@Slave keepalived-1.4.2]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/[root@Slave keepalived-1.4.2]# cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [root@Slave keepalived-1.4.2]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/[root@Slave keepalived-1.4.2]#使⽤keepalived保证nginx的⾼可⽤(⼀主⼀从),我的主服务器ip为(192.168.0.3),从机(192.168.0.4)在两条服务器分别安装nginx和keepalived,修改keeplived.conf⽂件vim /etc/keepalived/keepalived.conf主机配置⽂件! Configuration File for keepalivedglobal_defs {#⼀个没重复的名字即可router_id LVS_DEVEL}# 检测nginx是否运⾏vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2#权重减少20,减少完要⽐从机的值⼩weight -20}vrrp_instance VI_1 {# MASTER代表主机state MASTER# ⽹卡名字 ip addr 可以查看interface eno16777736# 同⼀个keepalived集群的virtual_router_id相同virtual_router_id 51# 权重,master要⼤于slavepriority 100# 主备通讯时间间隔advert_int 1# 如果两节点的上联交换机禁⽤了组播,则采⽤vrrp单播通告的⽅式# 本机ipunicast_src_ip 192.168.118.3unicast_peer {# 其他机器ip192.168.118.5}# 设置nopreempt防⽌抢占资源nopreempt# 主备保持⼀致authentication {auth_type PASSauth_pass 1111}# 与上⽅nginx运⾏状况检测呼应track_script {chk_nginx}virtual_ipaddress {# 虚拟ip地址(VIP,⼀个尚未占⽤的内⽹ip即可)192.168.118.118}}[root@Master keepalived-1.4.2]# cd /etc/keepalived/[root@Master keepalived]# lltotal 4-rw-r--r-- 1 root root 3550 Oct 12 03:41 keepalived.conf[root@Master keepalived]# cp keepalived.conf keepalived.conf.bak [root@Master keepalived]# vi /etc/keepalived/keepalived.conf global_defs {router_id LVS_DEVEL}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20}vrrp_instance VI_1 {state MASTERinterface enp0s3virtual_router_id 51priority 100advert_int 1unicast_src_ip 192.168.0.3unicast_peer {192.168.0.4}nopreemptauthentication {auth_type PASSauth_pass 1111}track_script {chk_nginx}virtual_ipaddress {192.168.0.10}}从机配置⽂! Configuration File for keepalivedglobal_defs {#⼀个没重复的名字即可router_id LVS_DEVEL}# 检测nginx是否运⾏vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20}vrrp_instance VI_1 {# 代表是从机state BACKUP# ⽹卡名字,ip addr获取interface eno16777736# 同⼀个keepalived集群的virtual_router_id相同virtual_router_id 51# 权重,master要⼤于slavepriority 90# 主备通讯时间间隔advert_int 1# 如果两节点的上联交换机禁⽤了组播,则采⽤vrrp单播通告的⽅式# 本机ipunicast_src_ip 192.168.118.5unicast_peer {# 其他机器ip192.168.118.3}# 设置nopreempt防⽌抢占资源nopreempt# 主备保持⼀致authentication {auth_type PASSauth_pass 1111}# 与上⽅nginx运⾏状况检测呼应track_script {chk_nginx}virtual_ipaddress {# 虚拟ip地址(VIP,⼀个尚未占⽤的内⽹ip即可)192.168.118.118}}-------------------------------------------------------------从机配置⽂![root@Slave keepalived-1.4.2]# cd /etc/keepalived/You have new mail in /var/spool/mail/root[root@Slave keepalived]# lltotal 4-rw-r--r-- 1 root root 3550 Oct 12 03:42 keepalived.conf[root@Slave keepalived]# cp keepalived.conf keepalived.conf.bak[root@Slave keepalived]# vi /etc/keepalived/keepalived.confglobal_defs {router_id LVS_DEVEL}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh"interval 2weight -20}vrrp_instance VI_1 {state Slaveinterface enp0s3virtual_router_id 51priority 90advert_int 1unicast_src_ip 192.168.0.4unicast_peer {192.168.0.3}nopreemptauthentication {auth_type PASSauth_pass 1111}track_script {chk_nginx}virtual_ipaddress {192.168.0.10}}主从机都需配置检测nginx是否在运⾏,不在允许就直接启动nginx的脚本,和keepalived放在⼀起脚本名称 nginx_check.sh#!/bin/bashA=`ps -C nginx –no-header |wc -l`if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfifi[root@Master keepalived]# pwd/etc/keepalived[root@Master keepalived]# vi nginx_check.sh#!/bin/bashA=`ps -C nginx –no-header |wc -l`if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfifi[root@Slave keepalived]# pwd/etc/keepalived[root@Slave keepalived]# vi nginx_check.sh#!/bin/bashA=`ps -C nginx –no-header |wc -l`if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfifi只要配置好了,以后直接启动keepalived就好了,keepalived运⾏之后就会检测nginx是否在运⾏,不在运⾏就通过脚本去启动⾃动重启不了解决⽅案查看脚本是否有运⾏的权限如果你是root登陆的话(不是的话,切换到root⽤户,对*.sh 赋可执⾏的权限)chmod 777*.sh或者chmod +x *.sh主:[root@Master keepalived]# chmod +x nginx_check.sh[root@Master keepalived]# lltotal 12-rw-r--r-- 1 root root 572 Oct 12 03:55 keepalived.conf-rw-r--r-- 1 root root 3550 Oct 12 03:48 keepalived.conf.bak-rwxr-xr-x 1 root root 205 Oct 12 04:04 nginx_check.sh[root@Master keepalived]#备:[root@Slave keepalived]# chmod +x nginx_check.sh[root@Slave keepalived]# lltotal 12-rw-r--r-- 1 root root 575 Oct 12 04:02 keepalived.conf-rw-r--r-- 1 root root 3550 Oct 12 03:57 keepalived.conf.bak-rwxr-xr-x 1 root root 205 Oct 12 04:04 nginx_check.sh[root@Slave keepalived]#keepalived常⽤命令#启动service keepalived start#停⽌service keepalived stop#查看状态service keepalived status主:[root@Master keepalived]# service keepalived startStarting keepalived (via systemctl): [ OK ][root@Master keepalived]# service keepalived stopStopping keepalived (via systemctl): [ OK ][root@Master keepalived]# service keepalived startStarting keepalived (via systemctl): [ OK ][root@Master keepalived]# service keepalived status● keepalived.service - LVS and VRRP High Availability MonitorLoaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)Active: active (running) since Mon 2020-10-12 04:08:03 EDT; 14s agoProcess: 9822 ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 9823 (keepalived)CGroup: /system.slice/keepalived.service├─9823 /usr/local/keepalived/sbin/keepalived -D├─9824 /usr/local/keepalived/sbin/keepalived -D└─9825 /usr/local/keepalived/sbin/keepalived -DOct 12 04:08:05 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:09 Master Keepalived_vrrp[9825]: Track script chk_nginx is being timed out, expect idle - skipping runOct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on enp0s3 for 192.168.0.10 Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:13 Master Keepalived_vrrp[9825]: Track script chk_nginx is being timed out, expect idle - skipping runOct 12 04:08:17 Master Keepalived_vrrp[9825]: Track script chk_nginx is being timed out, expect idle - skipping run[root@Master keepalived]#备:[root@Master keepalived]# service keepalived startStarting keepalived (via systemctl): [ OK ][root@Master keepalived]# service keepalived stopStopping keepalived (via systemctl): [ OK ][root@Master keepalived]# service keepalived startStarting keepalived (via systemctl): [ OK ][root@Master keepalived]# service keepalived status● keepalived.service - LVS and VRRP High Availability MonitorLoaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)Active: active (running) since Mon 2020-10-12 04:08:03 EDT; 14s agoProcess: 9822 ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)Main PID: 9823 (keepalived)CGroup: /system.slice/keepalived.service├─9823 /usr/local/keepalived/sbin/keepalived -D├─9824 /usr/local/keepalived/sbin/keepalived -D└─9825 /usr/local/keepalived/sbin/keepalived -DOct 12 04:08:05 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:09 Master Keepalived_vrrp[9825]: Track script chk_nginx is being timed out, expect idle - skipping runOct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on enp0s3 for 192.168.0.10 Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:10 Master Keepalived_vrrp[9825]: Sending gratuitous ARP on enp0s3 for 192.168.0.10Oct 12 04:08:13 Master Keepalived_vrrp[9825]: Track script chk_nginx is being timed out, expect idle - skipping runOct 12 04:08:17 Master Keepalived_vrrp[9825]: Track script chk_nginx is being timed out, expect idle - skipping run[root@Master keepalived]#Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to .Commercial support is available at .Thank you for using nginx.Master ip:192.168.0.3Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to .Commercial support is available at .Thank you for using nginx.Slave ip:192.168.0.4Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to .Commercial support is available at .Thank you for using nginx.Master ip:192.168.0.3⼀切正常,将主机的keepalived服务给停掉,模拟服务器宕机的场景[root@Master keepalived]# service keepalived stopStopping keepalived (via systemctl): [ OK ]You have new mail in /var/spool/mail/root[root@Master keepalived]#Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to .Commercial support is available at .Thank you for using nginx.Slave ip:192.168.0.4成功切换到备⽤服务器接下来重启主服务器,再访问虚拟ip[root@Master keepalived]# service keepalived startStarting keepalived (via systemctl): [ OK ][root@Master keepalived]#Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to .Commercial support is available at .Thank you for using nginx.Master ip:192.168.0.3由此可见,当主机dowm掉的时候才会访问从机,当主机连进来的时候⼜回去访问主机当主机正常运⾏通过ip addr命令的时候可以看到⽹络下多了个虚拟ip,⽽从机却没有,只要当主机挂了时候从机才会显⽰xuniip 主:[root@Master keepalived]# ip addr1: 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 hostvalid_lft forever preferred_lft forever2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:19:70:2f brd ff:ff:ff:ff:ff:ffinet 192.168.0.3/24 brd 192.168.0.255 scope global noprefixroute enp0s3valid_lft forever preferred_lft foreverinet 192.168.0.10/32 scope global enp0s3valid_lft forever preferred_lft foreverinet6 fe80::58e8:d448:52fb:c18c/64 scope link noprefixroutevalid_lft forever preferred_lft forever[root@Master keepalived]#备:[root@Slave keepalived]# ip addr1: 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 hostvalid_lft forever preferred_lft forever2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:93:55:c9 brd ff:ff:ff:ff:ff:ffinet 192.168.0.4/24 brd 192.168.0.255 scope global noprefixroute enp0s3valid_lft forever preferred_lft foreverinet6 fe80::4ee7:51c7:e8fe:f5e5/64 scope link noprefixroutevalid_lft forever preferred_lft foreverYou have new mail in /var/spool/mail/root[root@Slave keepalived]#。
一按拓扑图搭建好存储设备
二安拓扑搭建好web节点服务器
三配置主调度服务keepalived服务器1安装工具
2安装ipvsadm为了一会查看
3安装keepalived源码包
4添加系统服务开启服务
5编写keepalived配置文件
5.1配置文件说明
6重新启动keepalived服务查看虚拟ip
四配置次调度服务keepalived服务器
1安装工具
2安装ipvsadm为了一会查看
3安装keepalived源码包
4添加系统服务开启服务
5编写keepalived配置文件
6在客户段测试ping能ping通
7去主调度器把主调度器的课keepalived服务关掉
8再在客户端上ping还能同
9去次调度服务上查看虚拟ip
10再在主调度器上开启服务查看虚拟ip
11再在此服务器上验证查看虚拟ip。
CentOS6.3下部署LVS(NAT)+keepalived实现⾼性能⾼可⽤负载均衡⼀、简介VS/NAT原理图:⼆、系统环境实验拓扑:系统平台:CentOS 6.3Kernel:2.6.32-279.el6.i686LVS版本:ipvsadm-1.26keepalived版本:keepalived-1.2.4三、安装0、安装LVS前系统需要安装popt-static,kernel-devel,make,gcc,openssl-devel,lftp,libnl*,popt*1、在两台Director Server上分别配置LVS+KeepalivedLVS install -------------[root@CentOS-LVS_MASTER ~]# wget /software/kernel-2.6/ipvsadm-1.26.tar.gz [root@CentOS-LVS_MASTER ~]# ln -s /usr/src/kernels/2.6.32-279.el6.i686//usr/src/linux/[root@CentOS-LVS_MASTER ~]# tar zxvf ipvsadm-1.26.tar.gz[root@CentOS-LVS_MASTER ~]# cd ipvsadm-1.26[root@CentOS-LVS_MASTER ipvsadm-1.26]# make && make installKeepalived install -------------[root@CentOS-LVS_MASTER ~]# wget /software/keepalived-1.2.4.tar.gz[root@CentOS-LVS_MASTER ~]# tar zxvf keepalived-1.2.4.tar.gz[root@CentOS-LVS_MASTER ~]# cd keepalived-1.2.4[root@CentOS-LVS_MASTER keepalived-1.2.4]# ./configure && make && make install######### 将keepalived做成启动服务,⽅便管理##########[root@CentOS-LVS_MASTER ~]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/[root@CentOS-LVS_MASTER ~]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/[root@CentOS-LVS_MASTER ~]# mkdir /etc/keepalived/[root@CentOS-LVS_MASTER ~]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/[root@CentOS-LVS_MASTER ~]# cp /usr/local/sbin/keepalived /usr/sbin/[root@CentOS-LVS_MASTER ~]# service keepalived start | stop2、开启路由转发[root@CentOS-LVS_MASTER ~]# vim /etc/sysctl.confnet.ipv4.ip_forward = 1[root@CentOS-LVS_MASTER ~]# sysctl -p3、配置Keepalived[root@CentOS-LVS_MASTER ~]# less /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id LVS_MASTER #BACKUP上修改为LVS_BACKUP}vrrp_instance VI_1 {state MASTER #BACKUP上修改为BACKUPinterface eth0virtual_router_id 51priority 100 #BACKUP上修改为80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.227}}vrrp_instance LAN_GATEWAY {state MASTER #BACKUP上修改为LVS_BACKUPinterface eth1virtual_router_id 52priority 100 #BACKUP上修改为80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.10}}virtual_server 10.0.0.227 80 {delay_loop 6lb_algo rrlb_kind NAT# persistence_timeout 5protocol TCPreal_server 192.168.10.4 80 {weight 3TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.10.5 80 {weight 3TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}}BACKUP服务器同上配置,先安装lvs再安装keepalived,然后配置/etc/keepalived/keepalived.conf,只需将批注部分改⼀下即可。
深信服负载均衡主备双机一、主备双机配置界面『主备』设置双机热备功能。
界面如下图所示:『名称』自定义设备的名称,方便区分当前哪台设备处于主模式。
『状态』中[启用]用来启用双机,[禁用]用来禁用双机。
『超时时间』当在超时时间内备机一直无法收到主机发送的心跳包,则认为主机超时,备机主动切换成主机。
『通信介质』选择连接双机的接口,可以用串口和空闲的网口。
选择网口后,需要为该网口配置一个IP地址,只要不与正在使用的IP地址冲突即可。
建议选择网口作为通信介质,通过网口来做双机切换比串口切换花费的时间短。
通信介质选择网口,则可以实现会话同步。
『MAC同步』用于设置双机切换是否同步MAC地址。
『同步网口列表』用于设置切换双机的时候同步哪些接口的MAC地址,需要开启MAC 同步才会显示该选项。
『通信介质故障检测』通过网络数据包来检测对端是否存在,避免两台设备成为主机导致IP冲突。
两台设备的通信介质故障检测网口需要接到同一个广播域,可以选择已经使用的网口,也可以选择空闲网口,选择空闲网口需要设置IP地址。
界面如下:『同步配置』点击向备机同步配置。
『故障切换』用于设置双机切换条件,符合此处设置的条件则进行主备切换,界面如下:『状态』用于设置是否启用双机故障切换检测,『检测类型』分为『掉线检测』、『ARP检测』、『健康检查』3的检测方法。
『掉线检测』当检测到网口物理状态不正常则进行切换。
『ARP检测』AD设备向选择的接口发送ARP广播,如果监视主机里填写的IP地址有回应ARP,则判断正常。
该监视主机地址需要填写与AD设备接口同一网段的地址。
界面如下:『健康检查』通过网络接口处设置的链路健康检查机制来检测,当选择健康检查后,只有启用了链路健康检查的链路才可选,界面如下:『主备状态』分为“主机”、“备机”,可通过右边的切换按钮进行主备切换。
界面如下:『升级模式』升级模式在有升级需要时才手动启用,启用时不会发生主备切换,并且不会同步配置。
服务器双机热备教程服务器双机热备是一种提高服务器可用性和可靠性的技术手段,也被称为高可用性集群。
本文将详细介绍服务器双机热备的原理、配置步骤和注意事项。
一、原理介绍服务器双机热备的原理是将两台服务器配置为主备关系,主服务器负责处理用户请求,备服务器处于待机状态。
当主服务器发生故障或不可用时,备服务器会自动接管主服务器的工作,并继续提供服务,从而实现服务器的高可用性。
主备服务器之间通过心跳检测来监测对方的状态,常用的心跳检测方式有互ping和RS-232串口心跳。
当主服务器的心跳检测失败时,备服务器会发起切换请求,使其自己成为主服务器继续提供服务。
二、配置步骤1. 硬件准备:购买两台相同配置的服务器,确保服务器的硬件能够支持双机热备功能。
2. 系统安装:安装相同的操作系统和服务程序,并对操作系统进行适当的优化和调整。
3. 安装双机热备软件:选择适合的双机热备软件并进行安装配置。
常用的双机热备软件有Heartbeat、Keepalived等。
4. 配置主备服务器间的网络连接:可以通过专用网络线缆连接主备服务器的网口,实现高速、可靠的通信。
5. 配置双机热备软件:根据双机热备软件的要求进行配置,包括指定主服务器和备服务器,设置心跳检测方式和间隔时间等。
6. 测试和监控:进行功能测试,确保主备服务器间的切换正常可靠。
同时,配备监控系统,实时监控服务器的状态和性能。
三、注意事项1. 选择合适的双机热备软件:不同的双机热备软件有不同的特点和适用场景,需要根据自身需求选择适合的软件。
2. 确保硬件可靠性:服务器双机热备技术可以提高服务器的可用性,但如果硬件故障,双机热备也无法起到作用。
因此,选择可靠的服务器硬件非常重要。
3. 定期测试和演练:定期进行主备服务器间的切换测试,以确保切换过程的可靠性和服务的连续性。
同时,定期进行双机热备的演练,提高操作的熟练度。
4. 注意数据同步和一致性:主备服务器之间需要进行数据同步,以保证切换过程中数据的一致性。
keepalived切换原理在网络架构中,高可用性是一个重要的指标,以确保业务持续稳定地运行。
keepalived正是一种可以实现高可用性的解决方案,它通过VIP(virtual IP)做到了负载均衡和故障转移。
在本文中,我们将详细探讨keepalived切换原理。
keepalived切换原理分为两部分,一个是检测机制,一个是切换机制。
①检测机制keepalived在运行时会在主服务器和备服务器之间建立一个虚拟地址,这个虚拟地址就是VIP。
当主服务器出现故障时,keepalived 会将VIP移至备服务器,使得备服务器成为新的主服务器,从而实现故障转移。
为了确保能够及时检测到主服务器的故障,keepalived采用了以下两种检测方法:心跳检测:通过周期性地发送ICMP、UDP或TCP请求到主服务器的虚拟IP地址,从而检查主服务器是否正常运行。
接口检测:通过周期性地检查本地网卡接口的状态,同时向远程IP发送ICMP请求,来检查网络连通性是否正常,从而确保主服务器可以正常工作。
当检测到主服务器出现故障时,keepalived会进行切换操作。
②切换机制当检测到主服务器宕机或者不能正常工作时,keepalived会自动将备服务器的VIP设置为实际的IP地址,以实现自动备机切换。
keepalived切换过程如下:1.备服务器会先对VIP进行arp广播,告诉所有的交换机/路由器新的VIP地址是自己。
2.交换机/路由器此时会将VIP的MAC地址映射为备服务器的MAC 地址,从而保证了VIP的正确路由。
3.此时备服务器成为新的主服务器,开始接管业务。
4.主服务器恢复正常工作时,keepalived会再次进行切换,让主服务器重新成为主服务器。
总的来说,keepalived切换原理是通过周期性地检测主服务器的工作状态,并在主服务器宕机或发生故障时,自动切换到另一台服务器,将VIP地址进行更新,使备机接管业务。
在实际的生产环境中,keepalived切换原理已经得到了广泛的应用,在网络架构中起着重要的作用。
系统环境:************************************************************两台服务器都装了 CentOS-5.2-x86_64 系统,安装了 Squid 服务。
Virtual IP : 192.168.30.20Squid1+Real Server 1 :网卡地址 (eth0):192.168.30.12Squid2+Real Server 2 :网卡地址 (eth0):192.168.30.13************************************************************软件列表:keepalived/software/keepalived-1.1.17.tar.gz openssl-develyum install openssl-devel***************************************************************配置:配置基于高可用 keepalived, 确定 LVS 使用 DR 模式1. 安装配置 keepalived1.1 安装# yum install openssl-devel ;安装 keepalived 依赖软件#ln -s /usr/src/kernels/`uname -r`-`uname -m`/ /usr/src/linux ;建立内核链接,编译 keepalived 支持 lvs 时需要#tar zxvf keepalived-1.1.17.tar.gz#cd keepalived-1.1.17#./configure --prefix=/usr --sysconf=/etcKeepalived configuration------------------------Keepalived version : 1.1.17Compiler : gccCompiler flags : -g -O2Extra Lib : -lpopt -lssl -lcryptoUse IPVS Framework : Yes ; 注意编译时一定要支持 lvsIPVS sync daemon support : YesUse VRRP Framework : YesUse LinkWatch : NoUse Debug flags : No#make#make install1.2 编辑 keepalived 配置文件#Vi /etc/keepalived/keepalived.confglobal_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state BACKUP # 全部都是BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 2 # VRRP Multicast 广播周期秒数nopreempt #主机上用,如果切换后主机起来不再切换authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址如果有多个VIP,继续换行填写}}virtual_server 192.168.30.20 80 {delay_loop 2 # 每隔 6 秒查询 realserver 状态lb_algo wrr #lvs 算法(权重轮询)lb_kind DR # Direct Routepersistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver protocol TCP # 用 TCP 协议检查 realserver 状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}1.3 BACKUP 服务器同上配置,先安装 lvs 再按装 keepalived, 仍后配置 /etc/keepalived/keepalived.conf ,只需将红色标示的部分改一下即可 .global_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state BACKUP # 全部为 BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址}}virtual_server 192.168.30.20 80 {delay_loop 2 # 每隔 6 秒查询 realserver 状态lb_algo rr #lvs 算法lb_kind DR # Direct Routepersistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver protocol TCP # 用 TCP 协议检查 realserver 状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}==================================================================================================== 2.安装ipvsadmyum install ipvsadm新建个ipvsadm.sh#!/bin/bashRIP1=192.168.123.101RIP2=192.168.123.102VIP1=192.168.123.100/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.0.0 up/sbin/route add -host $VIP1 dev eth0:0echo "1" >/proc/sys/net/ipv4/ip_forward/sbin/ipvsadm -C#set LVS apache/sbin/ipvsadm -A -t $VIP1:80 -s node/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g./ipvsadm.sh startservice ipvsadm startipvsadm-save====================================================================================================== 3. 关闭 RealServer 的 ARP ,或者编辑 /etc/sysctl.conf, 修改系统变量net.ipv4.conf.eth0.arp_ignore=1net.ipv4.conf.eth0.arp_announce=1net.ipv4.ip_forward = 1#sysctl –p :使配置生效4. 启动 keepalived 服务#service httpd start#/etc/init.d/keepalived start查看keepalived的安装位置:# find / -name keepalived将keepalived作为服务添加到chkconfig中,并设置开机启动# chkconfig --add keepalived# chkconfig --level 35 keepalived on# chkconfig --list keepalivedkeepalived 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭“各等级”包括2、3、4、5等级等级0表示:表示关机等级1表示:单用户模式等级2表示:无网络连接的多用户命令行模式等级3表示:有网络连接的多用户命令行模式等级4表示:不可用等级5表示:带图形界面的多用户模式等级6表示:重新启动5. 测试 lvs 服务是否正常5.1 通过浏览器访问http://192.168.30.20是否正常多次刷新浏览器,在主 LVS 上看连接数变化5.2 停止主 LVS 上的 keepalived 看看备份 keepalived 是否正常接管服务注:realserver如果为windows主机的话需要安装microsoft loopback,设置IP为VIP 确认之后搜索注册表,关键字"VIP"把搜到结果的每项里面的subnet mask都改成255.255.255.255然后重启即可。