CentOS負載均衡配置

CentOS負載均衡配置

環境:

192.168.2.254 VIP

192.168.2.8 Master-LVS-Director

192.168.2.9 Backup-LVS-Director

192.168.2.6 RealServer1

192.168.2.7 RealServer2

注意:VIP(192.168.2.200)不能被佔用!

一、配置LVS

1、安裝ipvsadm

# yum install -y ipvsadm

2、安裝keepalived

確認當前運行的內核

# ls -1 /usr/src/kernels

2.6.32-358.2.1.el6.x86_64

如果沒有請安裝linux內核請執行下面命令安裝

# yum install -y kernel-devel

安裝keepalived

# wget //www.keepalived.org/software/keepalived-1.2.7.tar.gz

# tar -zxvf keepalived-1.2.7.tar.gz

# cd keepalived-1.2.7

#./configure --sysconfdir=/etc/ --sbindir=/usr/sbin/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64

Configure中錯誤彙總:

1)無GCC等編譯工具

CentOS負載均衡配置

2)無openssl-devel支持

CentOS負載均衡配置

3)未安裝popt的開發包

keepalived出現configure: error: Popt libraries is required的解決方法

解決方法:

#yum install popt-devel

當一切正常,顯示如下信息

Keepalived configuration

------------------------

Keepalived version : 1.2.7

Compiler : gcc

Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd

Extra Lib : -lpopt -lssl -lcrypto

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

IPVS use libnl : No

Use VRRP Framework : Yes

Use VRRP VMAC : No

SNMP support : No

Use Debug flags : No

# make && make install

# /usr/sbin/keepalived --version

Keepalived v1.2.7 (4/12,2013)

這樣keepalived就安裝成功了

3、配置keepalived

# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

# 全局定義

global_defs {

notification_email {

#[email protected]

}

#notification_email_from [email protected]

#smtp主機地址

smtp_server 127.0.0.1

smtp_connect_timeout 30

#運行Keepalived服務器的一個標識

#發郵件時顯示在郵件標題中的信息

#Router_id LVS_MASTER

}

#VIP

vrrp_instance VI_1 {

#指定實例的初始狀態(角色)。在兩臺都啟動時系統會馬上選擇priority值高的作為MASTER

state MASTER

#VT_1 實例綁定的網卡

interface eth0

#VRID 標記(0-255)

virtual_router_id 51

#優先級,BACKUP的值一定要低於MASTER

priority 100

#檢查間隔

advert_int 1

#設置認證

authentication {

#認證類型

auth_type PASS

#認證密碼

auth_pass 123456

}

#VIP 這個IP在發生MASTER 到 BACKUP切換時會隨之add或del,所以每臺服務器上可以不綁定

#虛擬地址,而都放入virtual_ipaddress塊中(可以多個),keepalived會自動使用ip地址進

#行綁定(不需要依賴ifcfg-eth0),利用ip add show eth0可以看到加入的VIP

virtual_ipaddress {

192.168.2.254

}

}

#定義virtual_server (TOMCAT | 90)

virtual_server 192.168.2.254 90 {

delay_loop 6 # service polling的delay時間

lb_algo wlc # 調度算法

lb_kind DR # LVS工作方式

persistence_timeout 50 # 會話保持時間

protocol TCP # 協議類型(TCP|UDP)

#定義rs1,每一個rs都需要下面的一個配置段

real_server 192.168.2.6 90 {

weight 1 # 權值 默認1,0為失效

# inhibit_on_failure # 在服務器健康檢查失敗後不從IPVS中刪除而將其權值標記為0

# TCP方式的健康檢查

TCP_CHECK {

connect_timeout 10 # 連接超時時間

nb_get_retry 3 # 重試次數

delay_before_retry 3 # 重試間隔

connect_port 90 # 健康檢查端口

}

}

# 定義rs2

real_server 192.168.2.7 90 {

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 90

}

}

}

在Backup-LVS-Director(192.168.2.9)上執行上面相同的操作!

不過需要修改state MASTER為state BACKUP,並修改priority的值小於MASTER的,router_id也要調整以和MASTER區別!

二、配置RealServer

為了方便起見,在RealServer上編寫一個啟動腳本,如下:

# vim rs_start.sh

#!/bin/bash

#Description : RealServer Start!

#Last Modefiy : 2013/4/12

VIP=192.168.2.254

LVS_TYPE=DR

startrs()

{

echo "start LVS of REALServer"

if [ "$LVS_TYPE" == "DR" ];then

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev lo:0

else

/sbin/ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up

/sbin/route add -host $VIP dev tunl0

fi

#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

}

stoprs()

{

if [ "$LVS_TYPE" == "DR" ];then

/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"

else

/sbin/ifconfig tunl0 down

echo "close LVS Tunnel server"

fi

#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

}

# ============ Main ===========

case $1 in

"start")

startrs;;

"stop")

stoprs;;

"*")

echo "Usage $0 {start|stop}"

exit 1

esac

該腳本默認啟動LVS/DR模式,通過修改腳本變量可以實現LVS/Tunnel模式的切換。

運行腳本進行rs1設置後執行相關的服務

# sh rs_start.sh start

啟動Tomcat

rs2也執行與上面相同的操作。

啟動之後查看ifconfig信息:

# ifconfig lo:0

lo:0 Link encap:Local Loopback

inet addr:192.168.2.254 Mask:255.255.255.255

UP LOOPBACK RUNNING MTU:16436 Metric:1

如果看到上面有虛擬IP的信息inet addr: 192.168.2.254說明RealServer啟動成功!

三、啟動LVS

Master/Backup LVS啟動keepalived服務

# service keepalived start

Backup-LVS 同樣執行如上命令啟動keepalived

查看Master-LVS上eth0接口在啟動keepalived前後變化

啟動keepalived之前

# ip add show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

link/ether 00:0c:29:46:cb:e4 brd ff:ff:ff:ff:ff:ff

inet 192.168.2.8/24 brd 172.1.1.255 scope global eth0

inet6 fe80::20c:29ff:fe46:cbe4/64 scope link

valid_lft forever preferred_lft forever

啟動keepalived之後

# ip add show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

link/ether 00:0c:29:46:cb:e4 brd ff:ff:ff:ff:ff:ff

inet 192.168.2.8/24 brd 172.1.1.255 scope global eth0

inet 192.168.2.254/32 scope global eth0

inet6 fe80::20c:29ff:fe46:cbe4/64 scope link

valid_lft forever preferred_lft forever

查看LVS運行情況

# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.2.254:90 wlc persistent 50

-> 192.168.6.254:90 Route 1 0 0

-> 192.168.7.254:90 Route 1 0 0

這樣LVS就全部啟動成功了!

相關推薦

推薦中...