天天看點

LVS叢集實戰

LVS

Linux Virtual Server: Linux虛拟伺服器

基于四層的LB

================================

LVS+keepalived Web Server 80/tcp

LVS+keepalived Galera MySQL/MySQL Cluster 3306/tcp

一、LVS概述

LVS是Linux核心的一部分,是以性能較高

Linux虛拟伺服器(即分發器或排程器)功能:

   不真正提供服務,介接受客戶的通路,為整個叢集提供一個唯一的入口

   虛拟伺服器和真實伺服器(Real Server)通信

   真正提供服務,叢集中每個(Real Server)可以是實體機,也可以是虛拟機

二、LVS三種基本模式

VS/NAT

VS/TUN

VS/DR

Server

any

Tunneling

Non-arp   device

Server   network

private

LAN/WAN

LAN

Server  number

low(10-20)

High(100)

Server  gateway

load   balancer

own   router

Own   router

注:Server為Real  Server

VS/NAT:

IIS,Apache,Nginx

私有網絡

low

10~20

gateway

所有Real  Server網關必須指向排程器

VS/NAT:網絡位址轉換模式,進站/出站的資料流量經過分發器。

VS/DR:直接路由模式,隻有進站的資料流量經過分發器

        調試器和真實伺服器必須在同一網段

VS/TUN:隧道模式,隻有進站的資料流量經過分發器。

VS/NAT配置

實驗說明:

1、  KVM網絡使用NAT模式

2、  client、調試器、Real  Server都使用虛拟機或使用真實伺服器

3、  虛拟機上的網卡使用半虛拟化驅動,如果半虛拟化驅動異常,可以使用default/rtl8139

網絡拓撲:

主機功能

IP位址

必備軟體

client

CIP:192.168.122.0/24

curl、elinks或firefox

Director

eth0:VIP:192.168.122.100

eth1:DIP:10.10.10.1

Real   Server

RIP:10.10.10.10    10.10.10.20    10.10.10.30

安裝httpd服務

DNS   Server

www.ak.com=====>192.168.122.100

bind或bind-chroot

建議:先在Real  Server安裝如httpd

VS/NAT實施

1、  準備工作(叢集中所有主機)[可選]

IP、hostname、hosts、iptables、SELinux、ssh  trust、ntp

cat  /etc/hosts

0.0.1    localhost

10.10.1   director1.sky.com   director1

10.10.10   node1.sky.com   node1

10.10.20   node2.sky.com   node2

10.10.30   node3.sky.com   node3

2、  RS配置

說明:RS是指Real Server,即後端的真實伺服器。

在node1、node2、node3上部署

node1部署httpd服務

yum    install   -y  httpd

echo   ServerName  node1.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node1 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on

cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.10

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show

curl    127.0.0.1

node2部署httpd服務

echo   ServerName  node2.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node2 web  > /var/www/html

IPADDR=10.10.10.20

node3部署httpd服務

echo   ServerName  node3.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node3 web  > /var/www/html

IPADDR=10.10.10.30

配置好網站伺服器,測試所有RS      //為了看到效果,建議提供不同的頁面

預設網關均指向Directory的DIP

3、  Director分發器配置

配置VIP

ip   addr   add  dev   eth0  192.168.122.100/24

vim    /etc/sysctl.conf     修改内容如下

net_ipv4.ip_forward=1

:wq儲存退出

sysctl   -p     //確定打開路由轉發

定義LVS的分發政策

yum    install   -y  ipvsadm    

ipvsadm    --help

man    ipvsadm   然後查找EXAMPLE執行個體

ipvsadm  -A  -t   192.168.122.100:80  -s  rr

ipvsadm   -a  -t   192.168.122.100:80   -r   10.10.10.10  -m

ipvsadm   -a  -t   192.168.122.100:80   -r   10.10.10.20  -m

ipvsadm   -a  -t   192.168.122.100:80   -r   10.10.10.30  -m

確定RHEL倉庫可用

-m是批massquerading(NAT)

技巧:

     Director排程器排程多個網站服務時,隻需要給排程器的WAN網卡設定多個外網IP,然後做第2個排程政策。

檢視LVS狀态資訊

ipvsadm    -L

ipvsadm    -Ln

狀态資訊如下:

檢視其他資訊

ipvsadm    -L   -n   --stats

ipvsadm    -L   -n   --rate

ipvsadm    -Ln   -c

watch   -n.5  'ipvsadm   -Ln   -c'

看速率

看LVS的連接配接條目

4、  測試

5、  小結

VS/NAT模式的原理:當Director收到Client請求時,Director将資料包的目标IP由VIP轉換為選中的Real  Server的RIP來實作分發。

要求:RS将網關指向Director的DIP。

特點:配置簡單,所有的入站、出站資料包都經過分發器。當資料量比較大時,分發器可能會出現網絡瓶頸!因而支援的RS數量少。

重點注意:

     Director必須開啟Kernel  ip_forward

所有Real Server預設網關指向DIP

     Director使用DIP和Real Server的RIP通信

監測:

     watch -n.5  'ipvsadm   -Ln -c'

新指令了解:

     arping -I  eth0  172.20.20.250

     ip addr   add  dev br1  172.16.20.250/24

     ip addr   add  dev lo  172.16.20.250/32

     arp -n | grep  192.168.100.2

VS/DR模式原了解析

RIP:設定在實體網卡

VIP:設定在lo環回網卡(127.0.0.1)上 

Non-arp工作原理:

VS-DR部署實戰

2、  DR模式要求Director的DIP和所有Real Server的RIP必須在同一個網段及廣播域

3、  所有節點網關均指定真實網關

4、  用腳本部署LVS叢集

注意:排程器和RealServer必須在同一個LAN,LAN可以使用公網IP,也可以使用private  IP

公網IP:前端路由器工作模式為路由模式

私網IP:前端路由器工作為NAT,并将某個公網IP映射到VIP(private)

Client

CIP:192.168.122.1

VIP:192.168.122.100

DIP:192.168.122.2

Real Server

RIP:192.168.122.10

RIP:192.168.122.20

RIP:192.168.122.30

Nor-arp

DNS Server

LVS/DR實戰

1、準備工作(叢集中所有主機)

168.122.2   director1.sky.com   director1

168.122.10   node1.sky.com   node1

168.122.20   node2.sky.com   node2

168.122.30   node3.sky.com   node3

6、  RS配置

在node1、node2、node3上部署好網站伺服器,測試所有RS。為了測試效果,提供不同的網站頁面。

在三台RS上的lo環回接口上添加VIP,并開啟Non-arp功能

ip    addr   dee  lo    192.168.122.100/32        #在lo接口上綁定VIP

echo   1 > /proc/sys/net/ipv4/conf/all/arp_ignore       #non-arp

echo   2> /proc/sys/net/ipv4/conf/all/arp_announce     #non-arp

預設網關均指向Director的DIP

7、  Director分發器配置

ip   addr   add  dev   eth0  192.168.122.100/32     ##配置VIP

yum    install   -y   ipvsadm     ##確定yum倉庫可用

定義LVS分發政策

ipvsadm   -C

ipvsadm   -A  -t  192.168.122.100:80  -s   rr

ipvsadm   -a  -t  192.168.122.100:80  -r   192.168.122.10  -g

ipvsadm   -a  -t  192.168.122.100:80  -r   192.168.122.20  -g

ipvsadm   -a  -t  192.168.122.100:80  -r   192.168.122.30  -g

service    ipvsadm  save

ipvsadm   -Ln

8、  測試

9、  小結

VS/NAT模式的原理:當一個Client發送一個請求到VIP,Director根據VIP選擇對應的RealServer的Pool,根據算法,在Pool中選擇一台RealServer,然後将Client的請求包發給選擇的RealServer,最後,選擇的RealServer把應答包直接傳給Client。

LVS叢集部署的腳本

vi   lvs_httpd.sh

#!/bin/bash

#LVS_DR_RealServer的httpd初始化腳本,并發處理。

IFS=$'\n'

alias   sed='sed  -c  --follow-syslinks'

ntpserver=172.16.8.100

vip=192.168.122.100

for    line   in  $(cat   real_serverip.txt)

#real_serverip.txt

#old_ip            hostname    newip

#192.168.122.10    web10      192.168.122.10 

#192.168.122.11    web11      192.168.122.20 

#192.168.122.12    web12      192.168.122.30 

#...

do

         {

         ip=$(echo  $line | awk '{print  $1}')

         hostname=$(echo  $line | awk '{print  $2}')

         newip=$(echo  $line | awk '{print  $3}')

         ssh  root@$ip   'chkconfig  NetworkManager  off'

         ssh  root@$ip   'iptables  -F ; service  iptables   save'

         ssh  root@$ip   "sed -r  -i  "/^SELINUX/cSELINUX=permissive"  /etc/selinux/config"

         ssh  root@$ip   "sed -r  -i  "/^HOSTNAME/cHOSTNAME=$hostname"  /etc/sysconfig/network"

         ssh  root@$ip   "sed -r  -i  "/^BOOTPROTO/cBOOTPROTO=none"   /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "sed -r  -i  "/IPADDR/cIPADDR=$newip"   /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "sed -r  -i  "3aPREFIX=24"  /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "sed -r  -i  "3aGATEWAY=$gw"  /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "wget   ftp://172.16.8.100/rhel6.repo   -O  /etc/yum.repos.d/rhel6.repo"

         ssh  root@$ip   "yum  install  -y   lftp  tree  httpd"

         ssh  root@$ip   "chkconfig  httpd  on"

         ssh  root@$ip   "echo   "ServerName   $hostname" > /etc/httpd/conf.d/sv.conf"

         ssh  root@$ip   "service  httpd  restart"

         ssh  root@$ip   "echo  $hostname >  /var/www/html/index.html"

         }&

done

LVS排程算法詳解

LVS持久性連接配接

LVS端口親緣性

基本LVS  LB叢集解決方案一  LVS  KeepAlived

基本LVS  LB叢集解決方案二  LVS  Piranha

      本文轉自rshare 51CTO部落格,原文連結:http://blog.51cto.com/1364952/1955320,如需轉載請自行聯系原作者

繼續閱讀