日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

keepalived实现Tomcat服务双机热备

發(fā)布時(shí)間:2024/4/11 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keepalived实现Tomcat服务双机热备 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。

?

歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/backend/keepalived-tomacat-standby/

?

項(xiàng)目中需要采用tomcat雙機(jī)熱備機(jī)制,以確保系統(tǒng)性能。本人通過查閱資料以及親自實(shí)現(xiàn)完成,寫下這篇博文,供個(gè)人讀者參考。

?

?

1. 規(guī)劃

1.1服務(wù)器環(huán)境規(guī)劃

負(fù)載服務(wù)器master及WEB服務(wù)器1真實(shí)IP:10.10.195.53

負(fù)載服務(wù)器backup及WEB服務(wù)器2真實(shí)IP:10.10.195.190

負(fù)載服務(wù)器虛擬ip:10.10.195.212

1.2 軟件環(huán)境規(guī)劃

操作系統(tǒng):Red Hat Enterprise Linux Server release 5.6 (Tikanga)

keepalived:keepalived-1.2.19

Java:jdk-1.7.0_79

Tomcat:apache-tomcat-7.0.64

2. 負(fù)載服務(wù)器配置

這里只敘述如何安裝配置keepalived,至于java以及tomcat的安裝及配置,這里不贅述。

2.1 安裝keepalived

?

[~]tar -zxvf keepalived-1.2.19.tar.gz [~] cd keepalived-1.2.19 [keepalived-1.2.19] ./configure --prefix=/usr/local/keepalived --disable-fwmark #(如果直接輸入./configure有可能報(bào)錯(cuò):configure:error: No SO_MARK declaration in headers) [keepalived-1.2.19] make [keepalived-1.2.19] make install


2.2 配置keepalived服務(wù)

?

?

[keepalived-1.2.19] cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ [keepalived-1.2.19] cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [keepalived-1.2.19] cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ [keepalived-1.2.19] mkdir /etc/keepalived [keepalived-1.2.19] cp /usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived/ [keepalived-1.2.19] chkconfig --add keepalived [keepalived-1.2.19] chkconfig keepalived on


?重啟\啟動(dòng)\關(guān)閉\查看狀態(tài)keepalived

?

service keepalived restart

service keepalived start

service keepalived stop

service keepalived status

2.3 配置keepalived.conf文件

?

[~]mv /etc/keepalived/keepalived.conf/etc/keepalived/keepalived.conf.bak [~]vi /etc/keepalived//keepalived.conf

?

主備機(jī)的keepalived.conf文件大致相同,只是注意紅色標(biāo)注的地方。

主機(jī)配置:

?

global_defs {router_id NodeA } vrrp_script chk_http_port {script "/opt/tomcat.pid"interval 5weight 2 } vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 52priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {10.10.195.212} }

?

備機(jī)配置:

?

global_defs {router_id NodeB } vrrp_script chk_http_port {script "/opt/tomcat.pid"interval 5weight 2 } vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {10.10.195.212} }

?

2.4配置/opt/tomcat.pid

?

#!/bin/bash #description: check tomcat service anddecide whether stop the keepalived or not #edited by zzh: 2015-10-14CATALINA_HOME=/users/shr/apache-tomcat-7.0.64 JAVA_HOME=/users/shr/util/JavaDir/jdk export CATALINA_HOME export JAVA_HOMEps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | wc | awk '{print $2}' >tomcat_process_count.txt read line < tomcat_process_count.txtstart_tomcat=$CATALINA_HOME/bin/startup.shif [ ${line} -lt 1 ] thenecho -n "===Starting tomcat===:"${start_tomcat}# :sudo service tomcat startecho "===tomcat start ok.==="sleep 3# check the tomcat status.ps ax --width=1000 | grep "org.apache.catalina.startup.Bootstrapstart" | grep -v "grep" | awk '{printf $1 " "}' | wc |awk '{print $2}' > tomcat_process_count.txtread line2 < tomcat_process_count.txtif [ ${line2} -lt 1 ]thensudo service keepalived stopfi fi rm tomcat_process_count.txt #shell end.

?

3. 日志查看

3.1 正常啟動(dòng)

輸入tail -f /var/log/messages查看啟動(dòng)keepalived日志:

MASTER10.10.195.53

?

Sep 29 15:49:16 shr Keepalived[5536]:Starting Keepalived v1.2.19 (09/21,2015) Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.53added Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.53added Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Registering Kernel netlink reflector Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Registering Kernel netlink command channel Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Opening file'/etc/keepalived/keepalived.conf'. Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Configuration is using : 6572 Bytes Sep 29 15:49:16 shr Keepalived[5537]:Starting Healthcheck child process, pid=5538 Sep 29 15:49:16 shr Keepalived_healthcheckers[5538]:Using LinkWatch kernel netlink reflector... Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.53 added Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.53 added Sep 29 15:49:16 shr Keepalived[5537]:Starting VRRP child process, pid=5539 Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering Kernel netlink reflector Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering Kernel netlink command channel Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering gratuitous ARP shared channel Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Opening file '/etc/keepalived/keepalived.conf'. Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Configuration is using : 36541 Bytes Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Using LinkWatch kernel netlink reflector... Sep 29 15:49:16 shr Keepalived_vrrp[5539]:VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)] Sep 29 15:49:17 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Transition to MASTER STATE Sep 29 15:49:17 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Received lower prio advert, forcing new election Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Entering MASTER STATE Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) setting protocol VIPs. Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.195.212 Sep 29 15:49:18 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.212 added Sep 29 15:49:18 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.212added Sep 29 15:49:23 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.195.212

?

(BACKUP:10.10.195.190)

?

Sep 29 15:46:25 server1 Keepalived[18218]:Starting Keepalived v1.2.19 (09/25,2015) Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Netlink reflector reports IP 10.10.195.190added Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Netlink reflector reports IP 10.10.195.190added Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Registering Kernel netlink reflector Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Registering Kernel netlink command channel Sep 29 15:46:25 server1 Keepalived_healthcheckers[18220]:Opening file '/etc/keepalived/keepalived.conf'. Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Configuration is using : 6682 Bytes Sep 29 15:46:25 server1 Keepalived[18219]:Starting Healthcheck child process, pid=18220 Sep 29 15:46:25 server1 Keepalived[18219]:Starting VRRP child process, pid=18221 Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Netlink reflector reports IP 10.10.195.190 added Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Netlink reflector reports IP 10.10.195.190 added Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Using LinkWatch kernel netlink reflector... Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering Kernel netlink reflector Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering Kernel netlink command channel Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering gratuitous ARP shared channel Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Opening file '/etc/keepalived/keepalived.conf'. Sep 29 15:46:25 server1 Keepalived_vrrp[18221]:Configuration is using : 36651 Bytes Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Using LinkWatch kernel netlink reflector... Sep 29 15:46:25 server1Keepalived_vrrp[18221]: VRRP_Instance(VI_1) Entering BACKUP STATE Sep 29 15:46:25 server1 Keepalived_vrrp[18221]:VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]

?

3.2 主備切換

l? 當(dāng)在主機(jī)(MASTER:10.10.195.53)中輸入 sudoservice keepalived stop,此時(shí)就會(huì)進(jìn)行主備切換,主機(jī)切換成備機(jī)。

主機(jī)(MASTER:10.10.195.53)輸出如下

?

Oct 14 13:25:09 shr Keepalived_vrrp[26683]:VRRP_Instance(VI_1) sending 0 priority Oct 14 13:25:09 shr Keepalived_vrrp[26683]:VRRP_Instance(VI_1) removing protocol VIPs. Oct 14 13:25:09 shrKeepalived_healthcheckers[26682]: Netlink reflector reports IP 10.10.195.212removed Oct 14 13:25:09 shr Keepalived[26681]:Stopping Keepalived v1.2.19 (09/21,2015)

?

備機(jī)(BACKUP:10.10.195.190)輸出如下

?

Oct 14 13:19:58 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Transition to MASTER STATE Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Entering MASTER STATE Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) setting protocol VIPs. Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for10.10.195.212 Oct 14 13:19:59 server1 Keepalived_healthcheckers[30889]:Netlink reflector reports IP 10.10.195.212 added Oct 14 13:19:59 server1Keepalived_vrrp[30890]: Netlink reflector reports IP 10.10.195.212 added Oct 14 13:20:04 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for10.10.195.212

?

l? 當(dāng)在主機(jī)(MASTER:10.10.195.53)中輸入sudoservice keepalived start,此時(shí)就會(huì)切換成主機(jī)。備機(jī)(BACKUP:10.10.195.190)輸出如下信息:

?

Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Received higher prio advert Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Entering BACKUP STATE Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) removing protocol VIPs. Oct 14 13:25:11 server1Keepalived_healthcheckers[30889]: Netlink reflector reports IP 10.10.195.212removed Oct 14 13:25:11 server1Keepalived_vrrp[30890]: Netlink reflector reports IP 10.10.195.212 removed

?

4. 查看虛擬ip

可以通過ip add show命令查看添加的虛擬ip:

?

[shr@shr bin]$ip add show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueuelink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lo 2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:0c:29:6b:f2:a8 brd ff:ff:ff:ff:ff:ffinet 10.10.195.53/24 brd 10.10.195.255 scope global eth0inet 10.10.195.212/32scope global eth0

?

5. 常見錯(cuò)誤

5. 1常見錯(cuò)誤一:

?

/var/log/messages has thousands of errorslike this:Jun 28 09:18:32 rust Keepalived_vrrp:receive an invalid ip number count associated with VRID! Jun 28 09:18:32 rust Keepalived_vrrp: bogusVRRP packet received on eth0 !!! Jun 28 09:18:32 rust Keepalived_vrrp:VRRP_Instance(VI_1) Dropping received VRRP packet...The backup director starts up, but doesn'tlisten on the virtual addresses at all. Its /var/log/messages has thousands of errors like this:Jun 28 06:25:05 stye Keepalived_vrrp:receive an invalid ip number count associated with VRID! Jun 28 06:25:05 stye Keepalived_vrrp: bogusVRRP packet received on eth0 !!! Jun 28 06:25:05 stye Keepalived_vrrp:VRRP_Instance(VI_1) ignoring received advertisment...<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">?</span>

?

解決方法:

改變配置文件/etc/keepalived/keepalived.conf中virtual_router_id為另一個(gè)值即可。

(changed the vrid to another number and it worked fine).

5.2 常見錯(cuò)誤二:

主機(jī)執(zhí)行到VRRP_Instance(VI_1) Entering BACKUP STATE之后沒有執(zhí)行VRRP_Instance(VI_1)setting protocol VIPs。

解決方法:

可能是配置文件keepalived.conf中{左邊沒有空格。

?

linux添加tomcat服務(wù)

在/etc/init.d中輸入 sudo vim tomcat

腳本具體內(nèi)容如下:

?

#!/bin/bash #chkconfig: 2345 10 90 #description: Starts and Stops the tomcatdaemon #edited by ZZH: 2015-10-14CATALINA_HOME=/users/shr/apache-tomcat-7.0.64 JAVA_HOME=/users/shr/util/JavaDir/jdk export CATALINA_HOME export JAVA_HOMEstart_tomcat=$CATALINA_HOME/bin/startup.sh stop_tomcat=$CATALINA_HOME/bin/shutdown.shif [ ! -f $CATALINA_HOME/bin/catalina.sh ] thenecho"===Tomcat is not available.==="exit fistart() {echo-n "===Starting tomcat===:"${start_tomcat}echo"===tomcat start ok.===" }stop() {echo-n "===Shutting down tomcat===:"${stop_tomcat}echo"===tomcat stop ok.===" }status() {ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | wc | awk '{print $2}'> tomcat_process_count.txtreadline < tomcat_process_count.txtrmtomcat_process_count.txtif[ $line -gt 0 ]thenecho-n "tomcat ( pid = "ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | awk '{print $1}'> tomcat_process_pid.txtreadpid < tomcat_process_pid.txtrmtomcat_process_pid.txtecho-n $pidecho-n ") is running..."echoelseecho"tomcat is stopped"fi }case "$1" instart)start;;stop)stop;;restart)stopsleep1start;;status)status;;*)echo"Usage:$0 {start|stop|restart}"exit1 esacexit 0 # shell end.

?

在終端輸入:

?

sudo chmod 755 tomcat sudo chkconfig --add tomcat

?

?

?

tomcat 啟動(dòng) service tomcatstart

tomcat 關(guān)閉 service tomcatstop

tomcat 重啟 service tomcatrestart

tomcat狀態(tài)查看 service tomcatstatus

?

歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/backend/keepalived-tomacat-standby/

?

歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。

總結(jié)

以上是生活随笔為你收集整理的keepalived实现Tomcat服务双机热备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。