目錄
六、網(wǎng)絡(luò)結(jié)構(gòu)... 4
1、安裝ipvsadm 和 KeepAlived for Master. 5
十、JBoss作為L(zhǎng)VS的WebServer:... 15
1、安裝ipvsadm(Master/Backup)
2、安裝keepalived(Master/Backup)
3、配置keepalived(Master/Backup)
4、配置ipvsadm(Master/Backup)
5、配置RealServer
CentOS6 (Linux Kernel 2.6.32-71.el6.i686)
ipvsadm 1.2.4
keepalived 1.1.17
Master IP:192.168.20.100
Backup IP:192.168.20.101
RealServer IP:192.168.20.102、192.168.20.100(兼)、192.168.20.101(兼)
192.168.20.99
CentOS6 安裝選擇開發(fā)工作站模式
防火墻都關(guān)閉(因?yàn)闃I(yè)務(wù)機(jī)器前端有專用的防火墻,如果沒有,那么Master也可兼)
[root@RServer2 soft]#mkdir /soft
[root@RServer2 soft]#cd /soft
[root@RServer2 soft]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
[root@RServer2 soft]# wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
[root@RServer2 soft]#ln -s /usr/src/kernels/2.6.32-71.el6.i686/ /usr/src/linux
[root@RServer2 soft]# tar -zxvf ipvsadm-1.24.tar.gz
[root@RServer2 soft]# cd ipvsadm-1.24
[root@RServer2 ipvsadm-1.24]# make;make install
[root@RServer2 ipvsadm-1.24]# cd ..
[root@RServer2 soft]# tar -zxvf keepalived-1.1.17.tar.gz
[root@RServer2 soft]# cd keepalived-1.1.17
[root@RServer2 soft]# ./configure --prefix=/usr/local/keepalived
[root@RServer2 keepalived-1.1.17]# make;make install
順利的話就這些步驟了,如果出現(xiàn)錯(cuò)誤提示,那么根據(jù)具體的錯(cuò)誤具體處理,一般可能出現(xiàn)的錯(cuò)誤:
1)、OpenSSL,提示可能如下
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files.
解決方案:運(yùn)行yum -y installopenssl-devel
2)、提示沒有g(shù)cc編譯器
解決方案:運(yùn)行yum installncurses-devel gcc gcc-c++ make rpm-build
[root@RServer2 keepalived-1.1.17]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
[root@RServer2 keepalived-1.1.17]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@RServer2 keepalived-1.1.17]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@RServer2 keepalived-1.1.17]# mkdir -p /etc/keepalived/
[root@RServer2 keepalived-1.1.17]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
[root@RServer2 keepalived-1.1.17]# chmod +x /etc/init.d/keepalived
[root@RServer2 keepalived-1.1.17]# gedit /etc/keepalived/keepalived.conf
或是
[root@RServer2 keepalived-1.1.17]# vi /etc/keepalived/keepalived.conf
keepalived.conf文件如下:
#Master服務(wù)器上的配置 /etc/keepalived/keepalived.conf
global_defs {
notification_email {
likx@****.com #可以多個(gè)地址
}
notification_email_from likx@****.com
smtp_server 192.168.0.**
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#監(jiān)測(cè)ipvsadm進(jìn)程狀態(tài),每3秒執(zhí)行一次
vrrp_script chk_ipvsadm{
script "/usr/local/keepalived/chk_ipvsadm.sh"
interval 3
weight 3
}
vrrp_instance VI_1 {
state MASTER #標(biāo)示狀態(tài)為MASTER 備份機(jī)為BACKUP
interface eth0
virtual_router_id 51
priority 100 #MASTER權(quán)重要高于BACKUP 比如BACKUP為99
advert_int 5
mcast_src_ip 192.168.20.101 #Master服務(wù)器IP,如果是備份機(jī)請(qǐng)?zhí)顚憘浞輽C(jī)的IP
authentication {
auth_type PASS #主從服務(wù)器驗(yàn)證方式
auth_pass 1111
}
virtual_ipaddress {
192.168.20.99 #虛擬IP
}
}
#虛擬服務(wù)器 21端口的配置
virtual_server 192.168.20.99 21 {
delay_loop 10 #(每隔10秒查詢r(jià)ealserver狀態(tài))
lb_algo rr #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的連接60秒內(nèi)被分配到同一臺(tái)realserver)
protocol TCP #(用TCP協(xié)議檢查realserver狀態(tài))
#實(shí)際服務(wù)器的IP和端口
real_server 192.168.20.102 21 {
weight 5
TCP_CHECK {
connect_timeout 10
connect_port 21
}
}
#實(shí)際服務(wù)器的IP和端口
real_server 192.168.20.100 21 {
weight 5
TCP_CHECK {
connect_timeout 10
connect_port 21
}
}
#實(shí)際服務(wù)器的IP和端口
real_server 192.168.20.101 21 {
weight 5
TCP_CHECK {
connect_timeout 10
connect_port 21
}
}
}
#虛擬服務(wù)器 80端口的配置
virtual_server 192.168.20.99 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.20.102 80 {
weight 5
TCP_CHECK {
connect_timeout 10
connect_port 80
}
}
real_server 192.168.20.100 80 {
weight 5
TCP_CHECK {
connect_timeout 10
connect_port 80
}
}
real_server 192.168.20.101 80 {
weight 5
TCP_CHECK {
connect_timeout 10
connect_port 80
}
}
}
keepAlived使用方式:
/etc/init.d/keepalived start|stop|restart
/usr/local/keepalived/chk_ipvsadm.sh文件內(nèi)容如下:
#!/bin/bash
#
# author: likexi
# description:
# 定時(shí)查看ipvsadm是否存在,如果不存在則啟動(dòng)ipvsadm,
# 如果啟動(dòng)失敗,則停止keepalived
#
status=$(ps aux|grep ipvsadm | grep -v grep | grep -v bash | wc -l)
if [ "${status}" = "0" ]; then
service ipvsadm start
status2=$(ps aux|grep ipvsadm | grep -v grep | grep -v bash |wc -l)
if [ "${status2}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
把一下內(nèi)容保存成:lvs_server.sh,并放置在/etc/init.d目錄下
#!/bin/bash
#把一下內(nèi)容保存成:lvs_server.sh
#并放置在/etc/init.d目錄下
#如果想啟動(dòng)LVS Server執(zhí)行:/etc/init.d/lvs_server.sh start
#如果想停止LVS Server執(zhí)行:/etc/init.d/lvs_server.sh stop
#如果想重啟LVS Server執(zhí)行:/etc/init.d/lvs_server.sh restart
VIP=192.168.20.99 #虛擬IP,更具具體情況而變
#有幾個(gè)輸入幾個(gè),與下面的配置對(duì)應(yīng),同時(shí)必須與KeepAlived.config配置對(duì)應(yīng)
RIP1=192.168.20.101 #實(shí)際的服務(wù)器IP
RIP2=192.168.20.100 #實(shí)際的服務(wù)器IP
RIP2=192.168.20.102 #實(shí)際的服務(wù)器IP
. /etc/rc.d/init.d/functions # 如果提示權(quán)限不夠,那么先在命令行執(zhí)行: chmod 777 /etc/rc.d/init.d/functions
case "$1" in
start)
echo "啟動(dòng)LVS服務(wù)器"
#設(shè)置虛擬IP和同步參數(shù)
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/ip_forward
#清空 IPVS的內(nèi)存數(shù)據(jù)
/sbin/ipvsadm -C
#設(shè)置LVS
#開啟FTP 21 端口服務(wù),并指向RIP1和RIP2的服務(wù)器
/sbin/ipvsadm -A -t $VIP:21 -s rr
/sbin/ipvsadm -a -t $VIP:21 -r $RIP1:21 -g
/sbin/ipvsadm -a -t $VIP:21 -r $RIP2:21 -g
/sbin/ipvsadm -a -t $VIP:21 -r $RIP3:21 -g
#開啟WEB 80 端口服務(wù),并指向RIP1和RIP2的服務(wù)器
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#運(yùn)行LVS
/sbin/ipvsadm -ln
;;
stop)
echo "關(guān)閉LVS服務(wù)器"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
restart)
echo "關(guān)閉LVS服務(wù)器"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
echo "啟動(dòng)LVS服務(wù)器"
#設(shè)置虛擬IP和同步參數(shù)
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/ip_forward
#清空 IPVS的內(nèi)存數(shù)據(jù)
/sbin/ipvsadm -C
#設(shè)置LVS
#開啟FTP 21 端口服務(wù),并指向RIP1和RIP2的服務(wù)器
/sbin/ipvsadm -A -t $VIP:21 -s rr
/sbin/ipvsadm -a -t $VIP:21 -r $RIP1:21 -g
/sbin/ipvsadm -a -t $VIP:21 -r $RIP2:21 -g
/sbin/ipvsadm -a -t $VIP:21 -r $RIP3:21 -g
#開啟WEB 80 端口服務(wù),并指向RIP1和RIP2的服務(wù)器
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#運(yùn)行LVS
/sbin/ipvsadm -ln
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
/etc/init.d/lvs_server.sh使用方法
[root@RServer2 ~]# chmod 777 /etc/init.d/lvs_server.sh
[root@RServer2 ~]# chmod 777 /etc/rc.d/init.d/functions
[root@RServer2 ~]# /etc/init.d/lvs_server.sh start|stop|restart
到這里為止,Master配置完成。
Backup的安裝和Master的安裝基本一致,只是一些參數(shù)略有變化。
變化的參數(shù)為止如下:
1、keepalived.conf文件中
原:state MASTER #標(biāo)示狀態(tài)為MASTER 備份機(jī)為BACKUP
state BACKUP #標(biāo)示狀態(tài)改為BACKUP
原:priority 100 #MASTER權(quán)重要高于BACKUP 比如BACKUP為99
priority 99 #MASTER權(quán)重要高于BACKUP,MASTER為100,那么BACKUP略小于,比如99
原:mcast_src_ip 192.168.20.101 #Master服務(wù)器IP,如果是備份機(jī)請(qǐng)?zhí)顚憘浞輽C(jī)的IP
mcast_src_ip 192.168.20.100 #換成BACKUP服務(wù)器IP
RealServer只需要在root目錄下創(chuàng)建lvs_real_server.sh文件,并執(zhí)行他一遍即可,lvs_real_server.sh的文件內(nèi)容如下:
#!/bin/bash
#把一下內(nèi)容保存成:lvs_real_server.sh
#并放置在root目錄下
#如果想啟動(dòng)real Server執(zhí)行:/root/lvs_real_server.sh start
#如果想停止real Server執(zhí)行:/root/lvs_real_server.sh stop
CLUSTER_VIP=192.168.20.99 #虛擬IP,更具具體情況而變
. /etc/rc.d/init.d/functions # 如果提示權(quán)限不夠,那么先在命令行執(zhí)行: chmod 777 /etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $CLUSTER_VIP netmask 255.255.255.255 broadcast $CLUSTER_VIP
/sbin/route add -host $CLUSTER_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "真實(shí)服務(wù)器啟動(dòng)....."
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $CLUSTER_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "真實(shí)服務(wù)器停止....."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
/root/lvs_real_server.sh使用方法
[root@RServer2 ~]# chmod 777 /root/lvs_real_server.sh
[root@RServer2 ~]# chmod 777 /etc/rc.d/init.d/functions
[root@RServer2 ~]# /root/lvs_real_server.sh start|stop|restart
Jboss作為L(zhǎng)VS的WebServer時(shí)需要做一些簡(jiǎn)單的配置
對(duì)于standalone運(yùn)行模式的Jboss,只需在standalone.xml配置文件添加如下內(nèi)容:
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:192.168.20.101}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:192.168.20.99}"/>
</interface>
<interface name="any">
<any-address/>
</interface>
</interfaces>
default-interface="any">
<socket-binding name="http" port="80"/>
<socket-binding name="https" port="443"/>
<socket-binding name="jmx-connector-registry" interface="management" port="1090"/>
<socket-binding name="jmx-connector-server" interface="management" port="1091"/>
<socket-binding name="jndi" port="1099"/>
<socket-binding name="osgi-http" interface="management" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
</socket-binding-group>
啟動(dòng):/etc/init.d/lvs_server.sh start
停止:/etc/init.d/lvs_server.sh stop
重啟:/etc/init.d/lvs_server.sh restart
啟動(dòng):/etc/init.d/keepAlived start
停止:/etc/init.d/keepAlived stop
重啟:/etc/init.d/keepAlived restart
啟動(dòng):/etc/init.d/lvs_real_server.sh start
停止:/etc/init.d/lvs_real_server.sh stop
后臺(tái)運(yùn)行模式:/jboss/bin/standalone.sh &
exit(退出控制臺(tái),但是Jboss繼續(xù)運(yùn)行)
前臺(tái)運(yùn)行模式:/jboss/bin/standalone.sh
關(guān)閉Jboss:ps aux | grep jboss
kill 對(duì)應(yīng)的線程號(hào)
聯(lián)系客服