閱讀424 返回首頁    go 阿裏雲 go 技術社區[雲棲]


CentOS6.4 LVS rpm包安裝及源碼安裝

RPM包安裝

係統平台 CentOS 6.4 x64 minimal

KERNEL 2.6.32-358.23.2.el6.x86_64

LVS版本 ipvsadm-1.25-10.el6.x86_64

KEEPALIVED 版本 keepalived-1.2.7-3.el6.x86_64


centos minimal 安裝好後

開始搭建 LVS 服務器,關於 yum 包的配置安裝我之前提過,略過

有兩種方式安裝 LVS 所需要的軟件: 源碼 和 YUM

源碼

wget https://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz

YUM

# yum install ipvsadm keepalived -y


ipvsadm 安裝好後

查看內核中相關IPVS的模塊

[myembedded]# modprobe --list|grep ip_vs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko

kernel/net/netfilter/ipvs/ip_vs_ftp.ko

第一個和最後一個

ip_vs.ko   ip_vs_ftp

中間的10個是ipvsadm 10個算法

rr 輪叫 round robin

調度器通過"輪叫"調度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一台服務 器,而不管服務器上實際的連接數和係統負載

wrr 加權輪叫 weighted round robin

調度器通過"加權輪叫"調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值

lc 最少鏈接 least connections

調度器通過"最少連接"調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集群係統的真實服務器具有相近的係統性能,采用"最小連接"調度算法可以較好地均衡負載

wlc 加權最少輪叫 weighted least connections

在集群係統中的服務器性能差異較大的情況下,調度器采用"加權最少鏈接"調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值

lblc 基於局部性的最少鏈接 locality-based least connections

"基於局部性的最少鏈接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集群係統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用"最少鏈接"的原則選出一個可用的服務器,將請求發送到該服務器

lblcr 帶複製的基於局部性的最少鏈接 locality-based least connections with replication

"帶複製的基於局部性最少鏈接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集群係統。它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一台服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按"最小連接"原則從服務器組中選出一台服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小連接"原則從這個集群中選出一台服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度

dh 目標地址散列 destination hashing

 "目標地址散列"調度算法根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空

sh 源地址散列 source hashing

"源地址散列"調度算法根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空

查看 ipvsadm 版本

[myembedded]# /sbin/ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn


開始配置

查看配置文件路徑

[myembedded]# whereis keepalived       
keepalived: /usr/sbin/keepalived /etc/keepalived /usr/share/man/man8/keepalived.8.gz
[myembedded]# whereis ipvsadm          
ipvsadm: /sbin/ipvsadm /usr/share/man/man8/ipvsadm.8.gz

ipvsadm 配置文件路徑:

/etc/sysconfig/ipvsadm-config

keepalived 配置文件路徑:

/etc/keepalived/keepalived.conf

# vim /etc/sysconfig/ipvsadm-config


開啟和停止 keepalived 服務

[myembedded]# service keepalived start
Starting keepalived:                                       [  OK  ]
[myembedded]# service keepalived stop
Stopping keepalived:                                     [  OK  ]


配置開啟 路由轉換

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

保存退出

使更改生效

sysctl -p


vim /etc/keepalived/keepalived.conf 待解決,因為我這邊網卡是 em1,我又不想改為 eth1


一些問題,關於普通用戶登錄:

[~$]ipvsadm
WARNING: Error inserting ipv6 (/lib/modules/2.6.32-358.23.2.el6.x86_64/kernel/net/ipv6/ipv6.ko): Operation not permitted
FATAL: Error inserting ip_vs (/lib/modules/2.6.32-358.23.2.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko): Operation not permitted
Can't initialize ipvs: Permission denied (you must be root)
Are you sure that IP Virtual Server is built in the kernel or as module?


/sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1
    -a 表示往一個服務內增加一個real server
    -r 指定real server的IP地址
    -w 表示權重
    -g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式



源碼安裝

ipvsadm 和 keepalived 源碼安裝

ipvsadm: make && make install

[ipvsadm-1.26]# make install
make -C libipvs
make[1]: Entering directory `/root/tools/ipvs/ipvsadm-1.26/libipvs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/tools/ipvs/ipvsadm-1.26/libipvs'
if [ ! -d /sbin ]; then mkdir -p /sbin; fi
install -m 0755 ipvsadm /sbin
install -m 0755 ipvsadm-save /sbin
install -m 0755 ipvsadm-restore /sbin
[ -d /usr/man/man8 ] || mkdir -p /usr/man/man8
install -m 0644 ipvsadm.8 /usr/man/man8
install -m 0644 ipvsadm-save.8 /usr/man/man8
install -m 0644 ipvsadm-restore.8 /usr/man/man8
[ -d /etc/rc.d/init.d ] || mkdir -p /etc/rc.d/init.d
install -m 0755 ipvsadm.sh /etc/rc.d/init.d/ipvsadm
[root@lvs1 ipvsadm-1.26]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[ipvsadm-1.26]# rpm -qa | grep ipvsadm
[ipvsadm-1.26]# whereis ipvsadm
ipvsadm: /sbin/ipvsadm /usr/man/man8/ipvsadm.8
[ipvsadm-1.26]# 


keepalived:

配置

./configure --prefix=/usr/local/keepalived

彈出:

.........

checking openssl/ssl.h usability... no
checking openssl/ssl.h presence... no
checking for openssl/ssl.h... no
configure: error: 
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!

經過查:

[root@lvs1 keepalived-1.2.4]# rpm -qa | grep openssl
openssl-1.0.0-27.el6_4.2.x86_64

試試用源碼安裝 openssl

openssl-1.0.1e.tar.gz   下載地址:

點擊打開鏈接

解壓安裝:

[openssl-1.0.1e]# ./config --prefix=/usr/local/openssl
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
Configuring for linux-x86_64
    no-ec_nistp_64_gcc_128 [default]  OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)

.......

make[1]: Nothing to be done for `generate'.
make[1]: Leaving directory `/root/tools/openssl-1.0.1e/test'


Configured for linux-x86_64.

然後就是

make && make install

花了我3分鍾左右安裝完成


現在再跑到 keepalived 目錄去,安裝 keepalived

./configure --prefix=/usr/local/keepalived

彈出:

...

checking openssl/ssl.h usability... no
checking openssl/ssl.h presence... no
checking for openssl/ssl.h... no
configure: error: 
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!

錯誤,參考網上朋友的思路,安裝了一些必要的文件,如下:

yum install -y  \

e2fsprogs-devel  \
keyutils-libs-devel \
libsepol-devel \
libselinux-devel \
krb5-devel \
zlib-devel \
openssl-devel


然後再次:

./configure --prefix=/usr/local/keepalived

......

checking for uname... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating genhash/Makefile
config.status: creating keepalived/core/Makefile
config.status: creating keepalived/include/config.h
config.status: creating keepalived.spec
config.status: creating keepalived/Makefile
config.status: creating lib/Makefile
config.status: creating keepalived/vrrp/Makefile
config.status: creating keepalived/check/Makefile
config.status: creating keepalived/libipvs-2.6/Makefile


Keepalived configuration
------------------------
Keepalived version       : 1.2.4
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto  -lnl
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : Yes
Use VRRP Framework       : Yes
Use VRRP VMAC            : Yes
Use Debug flags          : No

接著就是:

make && make install


裝完之後就是配置,今天老大幫著整理了一下,如果不需要備份機的話

隻需要裝 ipvsadm 這個 lvs 必備軟件即可

make && make install

在 lvs 端運行 config_vs.sh 腳本

在 web 端運行 config_rs.sh 腳本

然後就是加入係統啟動

cp config_vs.sh /usr/bin

cp config_rs.sh /usr/bin

編寫  /etc/rc.local

vim /etc/rc.local

添加

/usr/bin/config_vs.sh

/usr/bin/config_rc.sh


這樣就可以達到係統啟動時自動運行腳本

最後更新:2017-04-03 14:54:23

  上一篇:go 編程的視頻
  下一篇:go mysql-5.5+ 常見問題集錦及解決