技术博客devopsLinux

LVS DR模式和KeepAlived集群搭建

2018-05-24  本文已影响12人  老生住长亭

一、只用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 )

  1. 两台Realserver:静态设置

192.168.148.114

192.168.148.115

  1. 每台Real server的修改IP的设置文件,需要设置内核参数 主要:此处必须修改每一台的Real serVer 的内核参数,命令一样

  2. echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

  3. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  4. echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

  5. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  6. 在两台机器(RS)上,设置网卡的别名IP:192.168.148.20 设置网卡 lo的别名

  7. ifconfig lo:0 192.168.148.20 netmask 255.255.255.255 broadcast 192.168.148.20 不能对外广播数据

  8. 在两台机器(RS)上,添加一个路由 将VIP设置为路由IP,向外广播数据。

  9. 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 上设置

  1. ipvsadm -a -t 192.168.148.20:80 -r 192.168.148.114 -g -w 1 将192.168.148.114 (一台rs服务ip 和vip对应)
  2. 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这个步骤。此步骤必须执行

  1. 两台Realserver:静态设置

192.168.148.114

192.168.148.115

  1. 每台Real server的修改IP的设置文件,需要设置内核参数 主要:此处必须修改每一台的Real serVer 的内核参数,命令一样

  2. echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

  3. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  4. echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

  5. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  6. 在两台机器(RS)上,设置网卡的别名IP:192.168.148.20 设置网卡 lo的别名

  7. ifconfig lo:0 192.168.148.20 netmask 255.255.255.255 broadcast 192.168.148.20 不能对外广播数据

  8. 在两台机器(RS)上,添加一个路由 将VIP设置为路由IP,向外广播数据。

  9. 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这个步骤。此步骤必须执行

  1. 两台Realserver:静态设置

192.168.148.114

192.168.148.115

  1. 每台Real server的修改IP的设置文件,需要设置内核参数 主要:此处必须修改每一台的Real serVer 的内核参数,命令一样

  2. echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

  3. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  4. echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

  5. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  6. 在两台机器(RS)上,设置网卡的别名IP:192.168.148.20 设置网卡 lo的别名

  7. ifconfig lo:0 192.168.148.20 netmask 255.255.255.255 broadcast 192.168.148.20 不能对外广播数据

  8. 在两台机器(RS)上,添加一个路由 将VIP设置为路由IP,向外广播数据。

  9. 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 

    } 

} 

}

|

上一篇 下一篇

猜你喜欢

热点阅读