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