Lvs 부하 균형 실현

26860 단어

NAT 모드


NAT 모드의 장점은 서버가 TCP/IP를 지원하는 모든 운영체제를 실행할 수 있다는 것이다. 하나의 IP 주소만 스케줄러에 설정하면 서버 그룹은 개인 IP 주소를 사용할 수 있다.단점은 신축 능력이 유한하다는 것이다. 서버 결점 수가 20까지 올라갈 때 스케줄러 자체가 시스템의 새로운 병목이 될 수 있다. 왜냐하면 NAT 모드에서 요청과 응답 메시지가 부하 균형 스케줄러를 통과해야 하기 때문이다.
액세스 프로세스: 클라이언트 -> 스케줄러 -> 백엔드 서버 -> 스케줄러 -> 클라이언트
단일 NIC NAT 모드로 로드 밸런싱 구성:
 
 : Linux RedHat6.5
server2:172.25.7.2  # ipvsadm, 
server3:172.25.7.3  # httpd, 
server4:172.25.7.4  # httpd, 
 ip(VIP):172.25.254.100

1. 스케줄러 서버 2단 설정: ipvsadm를 설치하고 설정된yum원으로 다운로드하면 됩니다:yuminstallipvsadm-yyyum원 설정:
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.7.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=Red Hat Enterprise Linux HighAvailability
baseurl=http://172.25.7.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LoadBalancer]
name=Red Hat Enterprise Linux LoadBalancer
baseurl=http://172.25.7.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ResilientStorage]
name=Red Hat Enterprise Linux ResilientStorage
baseurl=http://172.25.7.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ScalableFileSystem]
name=Red Hat Enterprise Linux ScalableFileSystem
baseurl=http://172.25.7.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

2. ipvsadm를 다운로드하여 설치한 후 스케줄러인 서버 2 호스트에서 ipvsadm 정책을 설정합니다.
ifconfig eth0:0 172.25.254.100 netmask 255.255.255.0 up 
#  vip
ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 172.25.7.3:80 -m
ipvsadm -a -t 172.25.254.100:80 -r 172.25.7.4:80 -m
service ipvsadm save    # 

정책의 매개 변수는 다음과 같은 의미를 나타냅니다.
-A # 
-a # 
-s # , ‘rr’, 
-r # 
-m #  LVS  NAT 

정책 보기:
[root@server2 ~]# ipvsadm -ln  
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 172.25.7.3:80                Masq    1      0          0         
  -> 172.25.7.4:80                Masq    1      0          0         

커널 라우팅 열기: 기본적으로 0은 닫힌 상태입니다.
echo 1 > /proc/sys/net/ipv4/ip_forward # , 

 /etc/sysctl.conf :
net.ipv4.ip_forward = 1

nat 모듈 불러오기: 이 모듈을 불러오지 않으면 첫 번째 방문에서 성공할 수 있지만, 다시 방문할 때 지연이 너무 길거나 접근 시간이 초과됩니다.
modprobe iptable_nat

방화벽 닫기:
iptabes -F
/etc/init.d/iptables stop

2. 백엔드 서버 구성: server3
yum install httpd -y    # httpd

기본 게시 파일을 새로 만들고 편집합니다: index.html
echo "server3-hk" > /var/www/html/index.html

httpd:/etc/init를 시작합니다.d/httpdstart는 서버2의 같은 네트워크 구간 ip:vim/etc/sysconfig/network를 가리키는 스위치를 설정합니다
GATEWAY=172.25.7.2

네트워크 재부팅:/etc/init.d/network restart 방화벽 닫기:
iptabes -F
/etc/init.d/iptables stop

서버 4 구성:
yum install httpd -y    # httpd

기본 게시 파일을 새로 만들고 편집합니다: index.html
echo "server4-hk" > /var/www/html/index.html

httpd:/etc/init를 시작합니다.d/httpdstart 설정 인터페이스, 서버 2를 가리키는 같은 네트워크 단위 ip:vim/etc/sysconfig/network
GATEWAY=172.25.7.2

네트워크를 다시 시작하여 설정을 적용합니다:/etc/init.d/network restart 방화벽 닫기:
iptabes -F
/etc/init.d/iptables stop

테스트는 클라이언트가 가상 IP에 접근하여 클라이언트 단말기에서 직접 테스트를 하면 된다. for순환 문장을 사용하면 부하 균형 효과를 더욱 명확하게 볼 수 있다.
[root@hguan07 ~]# for i in {1..6}; do curl 172.25.254.100; done
server3-hk
server4-hk
server3-hk
server4-hk
server3-hk
server4-hk

스케줄러단 ipvsadm 부하 균형 효과 보기:
[root@server2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 172.25.7.3:80                Masq    1      0          3         
  -> 172.25.7.4:80                Masq    1      0          3         

TUN 모드


TUN 모드는 모든 서버가 IP 터널링 또는 IP Encapsulation 프로토콜을 지원해야 한다는 서버의 요구가 있습니다.현재 TUN 모드의 백엔드 서버는 주로 Linux 운영 체제를 실행하고 있습니다.TUN 모드에서 부하 스케줄러는 요청만 다른 백엔드 서버로 스케줄링하고 백엔드 서버는 응답한 데이터를 사용자에게 직접 되돌려줍니다.이렇게 하면 부하 스케줄러는 대량의 요청을 처리할 수 있고, 심지어 백 대 이상의 서버 (동등한 규모의 서버) 를 스케줄링할 수 있으며, 시스템의 병목이 되지 않는다.부하 스케줄러가 100Mbps의 전이중 네트워크 카드만 있어도 전체 시스템의 최대 처리량은 1Gbps를 초과할 수 있다.따라서 VS/TUN은 로드 스케줄러의 서버 수를 크게 늘릴 수 있습니다.VS/TUN 스케줄러는 수백 대의 서버를 스케줄링할 수 있지만 그 자체가 시스템의 병목이 되지 않아 고성능 슈퍼 서버를 구축할 수 있다.
액세스 프로세스: 클라이언트 -> 스케줄러 -> 백엔드 서버 -> 클라이언트
 
 : Linux RedHat6.5
server2:172.25.7.2  # ipvsadm
server3:172.25.7.3  # httpd
server4:172.25.7.4  # httpd
 ip(VIP):172.25.7.100

스케줄러 포트 서버 2 구성:
ipvsadm -C  # 
ipvsadm -A -t 172.25.7.100:80 -s rr
ipvsadm -a -t 172.25.7.100:80 -r 172.25.7.3:80 -i
ipvsadm -a -t 172.25.7.100:80 -r 172.25.7.4:80 -i
-i  # tun ip 
service ipvsadm save    # 

바인딩 VIP:
ifconfig eth0:0 172.25.7.100 netmask 255.255.255.0 up 

ipvsadm 상태 보기:
[root@server2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.7.100:80 rr
  -> 172.25.7.3:80                Tunnel  1      0          0         
  -> 172.25.7.4:80                Tunnel  1      0          0         

커널 라우팅 열기:
echo 1 > /proc/sys/net/ipv4/ip_forward

방화벽 닫기:
iptables -F
/etc/init.d/iptables stop

백엔드 서버 설정: 서버 3 바인딩 tun 모드 가상 IP:
ifconfig tunl0 172.25.7.100 netmask 255.255.255.255 up
route add -host 172.25.7.100 dev tunl0

게이트웨이 지향 스케줄러 ip:vim/etc/sysconfig/network
GATEWAY=172.25.7.2

네트워크를 다시 시작하여 스위치 설정을 적용합니다:/etc/init.d/network restart 설정 tun 모드 권한:
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

httpd 기본 발표 파일 내용은 다음과 같습니다:vim/var/www/html/index.html
<h1>server3-httph1>

httpd:/etc/init를 시작합니다.d/httpd start 방화벽 닫기:
iptables -F
/etc/init.d/iptables stop

서버 4 설정: 귀속tun 모드 가상 IP:
ifconfig tunl0 172.25.7.100 netmask 255.255.255.255 up
route add -host 172.25.7.100 dev tunl0

스케줄러 ip:vim/etc/sysconfig/network를 가리키는 스위치 설정
GATEWAY=172.25.7.2

네트워크를 다시 시작하여 스위치를 적용합니다:/etc/init.d/network restart 설정 tun 모드 권한:
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

httpd 기본 발표 파일 내용은 다음과 같습니다:vim/var/www/html/index.html
<h1>server4-httph1>

httpd:/etc/init를 시작합니다.d/httpd start 방화벽 닫기:
iptables -F
/etc/init.d/iptables stop

테스트는 클라이언트에서 가상 ip에 접근하고 여기서 클라이언트 단말기에서 접근하며 for순환으로 부하 균형 효과를 더욱 명확하게 볼 수 있다.
[root@hguan07 ~]# for i in {1..6}; do curl 172.25.7.100; done
<h1>server4-httph1>
<h1>server3-httph1>
<h1>server4-httph1>
<h1>server3-httph1>
<h1>server4-httph1>
<h1>server3-httph1>

스케줄러단 ipvsadm 부하 균형 효과 보기:
[root@server2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.7.100:80 rr
  -> 172.25.7.3:80                Tunnel  1      0          15        
  -> 172.25.7.4:80                Tunnel  1      0          15        

DR 모드


TUN 모드와 마찬가지로 부하 스케줄러는 스케줄링 요청만 책임지고 서버는 응답을 고객에게 직접 돌려주면 전체 집단 시스템의 토출량을 크게 높일 수 있다.TUN 모드에 비해 이런 방법은 IP 터널의 비용이 없지만 스케줄러와 서버 그룹은 물리적으로 스위치나 고속 HUB를 통해 연결되는 네트워크 카드가 끊어지지 않는 랜을 통해 연결되어야 한다.VIP 주소는 스케줄러와 서버 그룹이 공유하고 스케줄러가 설정한 VIP 주소는 대외적으로 볼 수 있으며 가상 서비스의 요청 메시지를 수신하는 데 사용된다.모든 서버는 VIP 주소를 각자의 Non-ARP 네트워크 장치에 설정합니다. 이 서버는 외부에 보이지 않고 대상 주소가 VIP인 네트워크 요청을 처리하는 데 사용됩니다
액세스 프로세스: 클라이언트 -> 스케줄러 -> 백엔드 서버 -> 클라이언트
 
 : Linux RedHat6.5
server2:172.25.7.2  # ipvsadm
server3:172.25.7.3  # httpd
server4:172.25.7.4  # httpd
 ip(VIP):172.25.7.200

스케줄러 포트 서버 2 구성:
ipvsadm -C  # 
ipvsadm -A -t 172.25.7.200:80 -s rr
ipvsadm -a -t 172.25.7.200:80 -r 172.25.7.3:80 -g
ipvsadm -a -t 172.25.7.200:80 -r 172.25.7.4:80 -g
-g  # DR 
service ipvsadm save    # 

귀속 VIP:
ifconfig eth0:0 172.25.7.200 netmask 255.255.255.0 up

방화벽 닫기:
iptables -F
/etc/init.d/iptables stop

백엔드 서버 설정: 서버 3 가상 IP 바인딩:
ifconfig lo:0 172.25.7.200 netmask 255.255.255.255 up
route add -host 172.25.7.200 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

httpd 기본 발표 파일의 내용은 다음과 같습니다:vim/var/www/html/index.html
<h1>server3-HKh1>

httpd:/etc/init를 시작합니다.d/httpd start 방화벽 닫기:
iptables -F
/etc/init.d/iptables stop

서버 4 구성: 가상 IP 바인딩:
ifconfig lo:0 172.25.7.200 netmask 255.255.255.255 up
route add -host 172.25.7.200 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

httpd 기본 발표 파일의 내용은 다음과 같습니다:vim/var/www/html/index.html
<h1>server4-HKh1>

httpd:/etc/init를 시작합니다.d/httpd start 방화벽 닫기:
iptables -F
/etc/init.d/iptables stop

테스트 클라이언트가 터미널에서 가상 IP에 접근하는 것과 마찬가지로 for 순환 문장을 사용합니다.
[root@hguan07 ~]# for i in {1..6}; do curl 172.25.7.200; done
<h1>server4-HKh1>
<h1>server3-HKh1>
<h1>server4-HKh1>
<h1>server3-HKh1>
<h1>server4-HKh1>
<h1>server3-HKh1>

스케줄러단 ipvsadm 부하 균형 효과 보기:
[root@server2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.7.200:80 rr
  -> 172.25.7.3:80                Route   1      0          121       
  -> 172.25.7.4:80                Route   1      0          122       

요약: 이 세 가지 모델 중 DR모드가 가장 빠르고 효율이 높으며 TUN모드의 ip터널 비용을 절약했다. TUN모드와 마찬가지로 스케줄러는 비교적 큰 부하 압력을 감당할 수 있다.NAT 모드의 효율이 가장 낮다. 요청 데이터의 왕복은 스케줄러를 거쳐야 하기 때문에 시간이 상대적으로 길다. 방문량이 너무 많으면 스케줄러는 새로운 압력 병목이 된다. 유일한 장점은 TCP/IP 프로토콜을 지원하는 모든 운영체제에서 부하 균형을 실현할 수 있다는 것이다.TUN 모드, 즉 IP 터널 모드도 효율적이지만 환경에 대한 요구가 높기 때문에 서버가 IP 터널 프로토콜을 지원해야 한다.

좋은 웹페이지 즐겨찾기