码迷,mamicode.com
首页 > 其他好文 > 详细

lvs piranha nginx tomcat (DR) 配置

时间:2015-02-28 10:17:06      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

实验平台 : CentOS release5.2 (Final)

实验目标 : 快速撑握和理解Piranha方案.

结构:

LVS-ACTIVE10.10.42.201

LVS-BACKUP: 10.10.42.202

LVS-VIP: 10.10.42.22

Realsever: 10.10.42.203,10.10.42.205

 

.Piranha方案基本简绍.

1.Piranha方案优点:

1.1.1配置简洁高效:配置简便一个lvs.conf配置文件即可搞定(keepalived方案.)

1.1.2WEB配置界面:WEB配置对于那些不懂LVS配置的人员来说非常吸引力.

1.1.3完整的功能:

主备LVS (Load Balancer)HeartbeatHA (pulse,send_arp)

LoadBalancerReal Server间进程服务的Heartbeat (nanny)

IPVS功能 (lvsd)

IPVS的管理 (ipvsadm)

 

2.Piranha方案原理结构描述:

Piranha方案是基于LVS基础上设计的一套负载均衡高可用解决方案.

LVS运行在一对有相似配置的计算机上:

一个作为活动LVS Router(Active LVS Router)

一个作为备份LVS Router(Backup LVS Router)

 

活动LVS Router服务有两个角色:

* 均衡负载到真实服务器上。

* 检查真实服务器提供的服务是否正常。

备份LVS Router用来监控活动的LVS Router,以备活动的LVS Router失败时由备份LVS Router接管。

 

Pulse:Pulse进程运行在活动LVS Router和备份LVS Router上。

在备份LVS Router上,pulse发送一个心跳(heartbeat)到活动LVS Router的公网接口上以检查活动LVS Router是否正常。

在活动LVS Router上,pulse启动lvs进程并响应来自于备份LVS Router的心跳。

 

lvsd:lvs进程调用ipvsadm工具去配置和维护IPVS路由表,并为每一个在真实服务器上的虚拟服务启动一个nanny进程。

 

nanny:每一个nanny进程去检查真实服务器上的虚拟服务状态,并将故障情况通知lvs进程。假如一个故障被发现,lvs进程通知ipvsadmIPVS路由表中将此节点删除。

 

send_arp:如果备份LVS Router未收到来自于活动LVS Router的响应,

它将调用send_arp将虚拟IP地址再分配到备份LVS Router的公网接口上。

并在公网接口和局域网接口上分别发送一个命令去关掉活动LVS Router上的lvs进程。同时启动自己的lvs进程来调度客户端请求。

 

3.Piranha方案基本套件安装:

Awget http://mirrors.163.com/.help/CentOS6-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo

Byum makecache

Cyum -y update

Dyum install ipvsadmmodcluster piranha system-config-cluster php php-cli php-common

 

4.配置文件介绍:

/etc/sysconfig/ha/lvs.cf     //http://ip:3636 web界面配置的配置文件写入此文件.

[root@slave1 ~]# cat /etc/sysconfig/ha/lvs.cf

serial_no = 83

primary = 10.10.42.201

service = lvs

backup_active = 1

backup = 10.10.42.202

heartbeat = 1

heartbeat_port = 539

keepalive = 8

deadtime = 9

network = direct

debug_level = NONE

monitor_links = 0

syncdaemon = 0

tcp_timeout = 5

tcpfin_timeout = 6

udp_timeout = 7

virtual MpmWeb {

     active = 1

     address = 10.10.42.22 eth0:1

     vip_nmask = 255.255.255.0

     port = 80

     persistent = 3600

     pmask = 255.255.255.0

     use_regex = 0

     load_monitor = none

     scheduler = rr

     protocol = tcp

     timeout = 30

     reentry = 30

     quiesce_server = 0

     server MpmWeb_s01 {

         address = 10.10.42.203

         active = 1

         port = 8080

         weight = 1

     }

     server MpmWeb_s02 {

         address = 10.10.42.205

         active = 1

         port = 8080

         weight = 1

     }

}

/etc/init.d/piranha-gui start  //启动piranha服务的WEB配置界面.

/etc/init.d/pulse           //启动piranha服务读取的就是/etc/sysconfig/ha/lvs.cf.

 

.    Piranha配置

配置主LVS服务器.

# vi /etc/sysctl.conf找到下面行 //启用数据转发.

net.ipv4.ip_forward = 00 改成1net.ipv4.ip_forward = 1

执行如下命令来应用:sysctl -p

 

通过WEB界面配置Piranha服务.

# /etc/init.d/piranha-gui start  //启动Piranha服务.

#/usr/sbin/piranha-passwd  //设置密码,请设置你的piranha服务WEB配置登陆密码.

http://10.10.42.201:3636/  输入用户名: piranha 及刚才设置的密码登陆.

A) CONTROL / MONITORING

 

B) GLOBAL SETTINGS

Primary server public IP:主服务器用于与应用服务器(Real Server)连接的IP

Primary server private IP:主服务器用于与备用服务器连接的心跳IP

Use Network Type:所选用的LVS模式。

 

C)REDUNDANCY配置 

Redundant server public ip:备用服务器的公网IP

Redundant server public IP:备用服务器用于与应用服务器(Real Server)连接的IP

Redundant server private IP:备用服务器用于与主服务器连接的心跳IP

Heartbeat interval:备用服务器对主服务器进行心跳检测的轮询时间。

Assume dead after:如果主服务器在指定时间内没有恢复心跳,则宣告服务器失效并进行接管。

Heartbeat runs on port:使用心跳来检测所使用的端口。

Monitor NIC links for failures:是否检测网卡的连接状态。

  

D)VIRTAL SERVERS配置

Name:定义虚拟服务器的名称。

Application port:指定此目标应用服务的端口。

Protocol:目标应用服务的网络协议,TCPUDP

Virtual IP Address:定义目标应用所使用的虚拟IP

Virtual IP Network Mask:定义目标应用所使用的虚拟IP的子网掩码。

Firewall Mark:当目标应用要使用多个IP端口时,结合IPTABLE设定防火墙标记。

Device:虚拟IP所挂接的网卡设备名。

Re-entry Time:当发现一个Real Server故障后,LVS Route对这个Server的检测间隔时间。

Server timeoutLVS RouteReal Server发送指令后,若超过此时间没有响应则认为服务器发生故障。

Quiesce server:一旦有Real Server加入或恢复,则所有负载队列记录均归"0"并重新进行分配。

Load monitoring tool:在Real Server中通过ruptimerup命令获得系统负载,以结合相应用的 Scheduling算法进行调度计算。

Scheduling:此虚拟服务器使用的调度算法。

Persistence:同一客户端长连接的保持时间。

Persistence Network Mask:长连接保持的子网掩码(网段)范围。

Load monitoring tool要求Real Server安装有ruptimerup,并要求LVS服务器可以使用root账号在不需要密码的情况下通过SSH连接到Real Server

Scheduling中包括以下8种调度策略:

Round-Robin Scheduling:轮询策略,IP分发时逐个地对Real Server进行轮询。 

Weighted Round-Robin Scheduling:加权轮询策略,配合权值进行轮询策略计算。

Least-Connection:最小连接优先策略,将新的IP请求分发到访问队列较短的Real Server

Weighted Least-Connections:加权最小连接优先策略,配合权值进行最小连接优先策略计算。

Locality-Based Least-Connection Scheduling:以下简称LBLCS,根据目标IP地址找出最近使用的服务器,若该服务器可用并且没有超载(系统压力未达到一半),就将请求发送到该服务器,否则使用最小连接优先策略。此策略主要针对的是Cache网关服务器。 

Locality-Based Least Connections with Replication Scheduling:与LBLCS类似,在LBLCS的基础上加入复制调度策略,使得"热门"网站使用时尽量Cache在同一台网关服务器中,进一步避免了在多台服务器中保存相同的Cache信息。此策略主要针对的边是Cache网关服务器。 

Destination Hashing Scheduling:通过对目标地址的Hash计算来确定目标服务器。此策略主要针对的是Cache网关服务器。 

Source Hashing Scheduling:通过对源地址的Hash计算来确定目标服务器。此策略主要针对的是Cache网关服务器。

 

E)添加real server

Name:设置此Real Server的名称。

Address:设置此Real ServerIP地址。

Weight:设置此Real Server的权值,当各Real Server的性能不相同时可设定性能较高的服务器得到较高的权值。

 

E)MONITORING SCRIPTS配置

Sending Program:通过程序实现Real Server中对应用服务可用性的判断(不能与Send同时使用)

Send:直接通过VIRTUAL SERVER中指定的端口发送指令。

ExpectSending ProgramSend后的返回值,如果与此返回值匹配,则表明此应用服务在当前Real  Server中运行正常。

Treat expect string as a regular expression:将Expect中的值作为正则表达式与返回值进行比对。 

注意:

此处的功能主要用于判断Real Server中的目标服务运行是否正常,如果发现服务失效,则主动在此VIRTUAL SERVER中隔离该Real Server

 

三、设置LVS相关服务自启动[Virtual Server]

/etc/init.d/piranha-gui start

/etc/init.d/pulse start

成功后的截图如下:

加入开启启动:

chkconfig –level 345 piranha-gui on

chkconfig –level 345 pulse on

 

四、RealServer系统配置[real server]

#!/bin/bash

#RealServer服务脚本,直接路由方式

MpmWeb_VIP=10.10.42.22

start(){

ifconfig lo:0 $MpmWeb_VIP netmask 255.255.255.255 broadcast $MpmWeb_VIP

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

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

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK [lvs_dr]"

}

 

stop(){

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

/sbin/ifconfig lo:0 down

/sbin/route del -host $MpmWeb_VIP

sysctl -p >/dev/null 2>&1

echo "RealServer Stoped [lvs_dr]"

}

 

restart(){

stop

start

}

 

case $1 in

 

start)

     start

      ;;

stop)

     stop

      ;;

restart)

     restart

      ;;

status)

     /sbin/ifconfig

      ;;

*)

   echo "Usage: $0 {start|stop|restart|status}"

   exit 1

esac

 

五、配置realserver前端代理

worker_processes  1;

error_log  logs/error.log  notice;

events {

    worker_connections  1024;

}

 

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    gzip  on;

 

    upstream MpmWeb_cluster{

         ip_hash;

         server 10.10.42.203:8080;

         server 10.10.42.205:8080;

         }

 

    server {

        listen       80;

        server_name  10.10.42.22;

        location / {

            root   html;

            index  index.html index.htm;

            proxy_pass http://MpmWeb_cluster;

            proxy_set_header Host $http_host;

            proxy_set_header X-Forward-For $remote_addr;

        }

        error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

 

        # 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;

        }

    }

}

 

六、测试

打开IE http://10.10.42.22/MpmWeb/不断刷新,能访问则说明成功。

 

lvs piranha nginx tomcat (DR) 配置

标签:

原文地址:http://blog.csdn.net/wych1981/article/details/43982097

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!