LVS DR模式和KeepAlived集群搭建
一、只用LVS 搭建
EG: (以一台中转服务为例,多个real server (如tomcat,weblogic服务器))
1.安装Ipvsadm
Yum install ipvsadm
2.配置中转服务的VIP
DIP: 192.168.148.110 ,设置静态ID 中转服务的实际IP ,也是物理IP
VIP:192.168.148.20 , ifconfig eth0:1 192.168.148.20/24 虚拟IP 也是网页访问输入的IP
3、找多台机器作为RS( apeche或者tomcat )
- 两台Realserver:静态设置
192.168.148.114
192.168.148.115
-
每台Real server的修改IP的设置文件,需要设置内核参数 主要:此处必须修改每一台的Real serVer 的内核参数,命令一样
-
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
-
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
-
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
-
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
-
在两台机器(RS)上,设置网卡的别名IP:192.168.148.20 设置网卡 lo的别名
-
ifconfig lo:0 192.168.148.20 netmask 255.255.255.255 broadcast 192.168.148.20 不能对外广播数据
-
在两台机器(RS)上,添加一个路由 将VIP设置为路由IP,向外广播数据。
-
route add -host 192.169.148.20 dev lo:0
意义: 可以在rs执行的配置写成脚本如下
|
脚本内容:
|
!/bin/bash
description : start realserver
VIP=192.168.239.100
case "$1" in
start)
echo " start LVS of REALServer"
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev lo:0
;;
stop)
ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
|
4、DR上需要加一个路由设置:route add -host 192.168.1.200 dev eth0:1
5、在RS 检查web服务是否正常
6、在DR上使用ipvsadm添加集群服务 在中转服务器DR 上设置
- ipvsadm -a -t 192.168.148.20:80 -r 192.168.148.114 -g -w 1 将192.168.148.114 (一台rs服务ip 和vip对应)
- ipvsadm -a -t 192.168.148.20:80 -r 192.168.148.115 -g -w 1 将 192.168.148.115 (另一台rs服务ip和vip对应)
二、KeepAlived和Apache 搭建集群
EG:以两台DR服务和两台RS为例。且DR中转服务区分Master和BackUP配置,即主从服务。
1.安装Ipvsadm
Yum install ipvsadm
Yum install keepAlived
2、多台机器作为RS( apeche或者tomcat ) 自己没有在执行rs这个步骤。此步骤必须执行
- 两台Realserver:静态设置
192.168.148.114
192.168.148.115
-
每台Real server的修改IP的设置文件,需要设置内核参数 主要:此处必须修改每一台的Real serVer 的内核参数,命令一样
-
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
-
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
-
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
-
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
-
在两台机器(RS)上,设置网卡的别名IP:192.168.148.20 设置网卡 lo的别名
-
ifconfig lo:0 192.168.148.20 netmask 255.255.255.255 broadcast 192.168.148.20 不能对外广播数据
-
在两台机器(RS)上,添加一个路由 将VIP设置为路由IP,向外广播数据。
-
route add -host 192.169.148.20 dev lo:0
意义: 可以在rs执行的配置写成脚本如下
|
脚本内容:
|
!/bin/bash
description : start realserver
VIP=192.168.239.100
case "$1" in
start)
echo " start LVS of REALServer"
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev lo:0
;;
stop)
ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
|
4、DR上需要加一个路由设置:route add -host 192.168.1.200 dev eth0:1 此步骤可以不执行
5、在RS 检查web服务是否正常
6、在DR上KeepAlived添加集群服务.
【master和backup机器上】修改keepalived的配置文件:/etc/keepalived/keepalived.conf
如下:
|
DR机器
|
配置文件:/etc/keepalived/keepalived.conf 配置内容【区别配置已经不标注】
|
|
MASTER 【主DR服务】
|
配置内容:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from xiaobao@node4
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.148.20/24 dev eth0 label eth0:1
}
}
virtual_server 192.168.148.20 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
nat_mask 255.255.255.0
real_server 192.168.148.114 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.148.115 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
|
|
BACKUP【备份DR服务】
|
配置内容:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from xiaobao@node1
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 49
advert_int 1
virtual_ipaddress {
192.168.148.20/24 dev eth0 label eth0:1
}
}
virtual_server 192.168.148.20 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
nat_mask 255.255.255.0
real_server 192.168.148.114 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.148.115 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
|
三、keepAlived和Nginx搭建集群 设置虚拟IP为:192.168.231.100
1、在Real server的nginx的机器上绑定VIP 和VIPz作为路由
多台机器作为RS( apeche或者tomcat ) 自己没有在执行rs这个步骤。此步骤必须执行
- 两台Realserver:静态设置
192.168.148.114
192.168.148.115
-
每台Real server的修改IP的设置文件,需要设置内核参数 主要:此处必须修改每一台的Real serVer 的内核参数,命令一样
-
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
-
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
-
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
-
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
-
在两台机器(RS)上,设置网卡的别名IP:192.168.148.20 设置网卡 lo的别名
-
ifconfig lo:0 192.168.148.20 netmask 255.255.255.255 broadcast 192.168.148.20 不能对外广播数据
-
在两台机器(RS)上,添加一个路由 将VIP设置为路由IP,向外广播数据。
-
route add -host 192.169.148.20 dev lo:0
2.修改nginx.conf 的配置文件
|
修改配置文件 nginx.conf
|
内容
|
|
/usr/local/tengine-2.1/conf/nginx.conf
|
user nobody;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
load modules compiled as Dynamic Shared Object (DSO)
dso {
load ngx_http_fastcgi_module.so;
load ngx_http_rewrite_module.so;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 192.168.231.100 ;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass [http://127.0.0.1](http://127.0.0.1/);
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}
|
3、修改装有keepAlived的机器。和上面个apache配置和修改地方一致
在DR上KeepAlived添加集群服务.
【master和backup机器上】修改keepalived的配置文件:/etc/keepalived/keepalived.conf
如下:
|
DR机器
|
配置文件:/etc/keepalived/keepalived.conf 配置内容【区别配置已经不标注】
|
|
MASTER 【主DR服务】
|
配置内容:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from xiaobao@node4
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.231.100/24 dev eth0 label eth0:1
}
}
virtual_server 192.168.148.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
nat_mask 255.255.255.0
第一台Real Server
real_server 192.168.231.10 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
第二台Real Server
real_server 192.168.231.11 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
|
|
BACKUP【备份DR服务】
|
配置内容:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from xiaobao@node1
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 49
advert_int 1
virtual_ipaddress {
192.168.231.100/24 dev eth0 label eth0:1
}
}
virtual_server 192.168.231.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
nat_mask 255.255.255.0
real_server 192.168.231.10 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.231.11 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
|