기사 디렉토리
머리말
이 고도의 정보 기반 IT 시대에 기업의 생산 시스템, 비즈니스 운영, 영업 및 지원, 일상적인 관리는 컴퓨터 정보 및 서비스에 점점 더 의존하고 있으며, 이는 고 가용성 (HA) 기술 애플리케이션에 대한 수요를 크게 증가 시켰습니다. 지속적이고 중단없는 컴퓨터 시스템 또는 네트워크 서비스를 제공하기 위해.
Keepalived를 사용하여 IP 주소에 대한 장애 복구 및 LVS 고 가용성 클러스터의 핫 백업 애플리케이션을 포함한 이중 시스템 핫 백업을 구현합니다.
1. Keepalived 이중 시스템 핫 백업의 기본 사항
1.1 Keepalived의 개요 및 설치
1.1.1, Keepalived 핫 백업 방법
Keepalived는 Linux 서버의 다중 머신 핫 백업 기능을 실현하기 위해 VRRP 핫 백업 프로토콜을 채택합니다.
VRRP (Virtual Routing Redundancy Protocol)는 라우터를위한 백업 솔루션입니다.
여러 라우터가 핫 백업 그룹을 형성하고 공유 가상 IP 주소를 통해 외부에 서비스를 제공합니다.
각 핫 백업 그룹에서 동시에 하나의 주 라우터 만 서비스를 제공하고 다른 라우터는 중복 상태입니다.
현재 온라인 라우터에 장애가 발생하면 다른 라우터가 설정된 우선 순위에 따라 가상 IP 주소를 자동으로 인수하고 서비스를 계속 제공합니다.
1.1.2, Keepalived 설치 및 서비스 제어
LVS 클러스터 환경에 적용 할 때 Keepalived 서비스
를
활성화 하려면 lipvsadm 관리 도구 YUM을 사용하여 Keepalived를 설치해야 합니다.
[root@localhost ~]# yum -y install keepalived ipvsadm
1.2. Keepalived를 사용하여 이중 시스템 핫 백업 달성
Keepalived는 다중 머신 핫 백업을 실현할 수 있으며 각 핫 스탠바이 그룹은 여러 서버를 가질 수 있으며 가장 일반적으로 사용되는 것은 이중 머신 핫 백업입니다.
이중 시스템 핫 백업의 페일 오버는 다양한 애플리케이션 서버에 적합한 가상 IP 주소의 드리프트로 실현됩니다.
이 배포는 웹 서비스를 기반으로 이중 머신 핫 백업을 구현합니다.
1.2.1, 메인 서버의 구성
Keepalievd 구성 디렉토리는 / etc / keepalievd /에 있습니다.
keepalievd.conf는 기본 구성 파일입니다.
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs{
…}区段指定全局参数
vrrp_instance实例名称{
…}区段指定VRRP热备参数
注释文字以“!”符号开头
目录samples/,提供了许多配置样例作为参考
常用配置选项
router_id HA_TEST_R1: 本路由器(服务器)的名称
vrrp_instance VI_1:定义VRRP热备实例
state MASTER:热备状态,MASTER表示主服务器
interface ens33:承载VIP地址的物理接口
virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
priority 100:优先级,数值越大优先级越高
advert_int 1:通告间隔秒数(心跳频率)
auth_type PASS:认证类型
auth_pass 123456:密码字串
virtual_ipaddress{
vip}:指定漂移地址(VIP),可以有多个,多个漂移地址以逗号分隔
구성에 문제가 없는지 확인하고 Keepalived 서비스를 시작하면 ip 명령을 통해 볼 수 있습니다.
[root@localhost keepalived]# systemctl start keepalived ####启动keepalived
[root@localhost keepalived]# ip addr show dev ens33 ####查看主控制IP地址和漂移地址
1.2.2, 대기 서버의 구성
Keepalived 백업 서버의 구성은 세 가지 옵션에서 마스터 구성과
다릅니다. router_id : 무료 이름
상태로 설정 : BACKUP
우선 순위로 설정 : 마스터 서버보다 낮은 값
기타 옵션은 마스터와 동일합니다.
1.2.3, 이중 시스템 핫 백업 기능 테스트
이중 시스템 핫 백업의 효과 테스트
메인 머신과 백업 머신 모두 웹 서비스가 활성화되어 있으며 내용은 동일
합니다 메인 서버의 네트워크 카드를 연속적으로 비활성화 및 활성화하고 다음 테스트를 수행하십시오.
테스트 1 : ping을 사용하여 19216810.72의 연결을 감지합니다.
테스트 2 : htt : /192168.10.72를 방문하여 가용성 및 콘텐츠 변경 사항을 확인합니다
. 테스트 3 : 로그 파일 / var / log / messages 에서 변경 사항을 확인합니다.
2. LVS + Keepalived 고 가용성 클러스터 실제 배포
2.1. 실험 환경
VMware 5 서버
IP 주소 계획 :
드리프트 주소 (VIP) : 192.168.100.100
기본 스케줄러 : 192.168.100.21
보조 스케줄러 : 192.168.100.20
웹 서버 1 : 192.168.100.22
웹 서버 2 : 192.168.100.23
스토리지 서버 : 192.168.100.100 100.24
2.2, 기본 스케줄러 구성
2.2.1, / proc 응답 매개 변수 조정
[
root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
2.2.2, 연결 유지 매개 변수 조정
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.100
}
}
virtual_server 192.168.100.100 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.23 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:11:0d:16 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.100.100/32 brd 192.168.100.100 scope global noprefixroute ens33:0
valid_lft forever preferred_lft forever
inet6 fe80::3069:1a3d:774b:18f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2.3, 슬레이브 스케줄러 구성
2.3.1, / proc 응답 매개 변수 조정
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
2.3.2, 연결 유지 매개 변수 조정
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.100
}
}
virtual_server 192.168.100.100 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.23 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:48:b8:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::e438:b533:985e:cf94/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2.4, 스토리지 서버 구성
먼저 nfs-utils 및 rpcbind가 설치되어 있는지 확인하고 yum과 함께 설치되지 않은 경우 설치
후 두 서비스를 시작합니다.
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# echo "this is www.51xit.top" > /opt/51xit/index.html
[root@localhost ~]# echo "this is www.52xit.top" > /opt/52xit/index.html
2.5, 노드 서버 구성
2.5.1, 가상 IP 주소 (VIP) 구성
방화벽과 코어 보호가 모두 꺼져 있습니다. nfs-utils가 설치되어 있는지 확인하십시오.
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig
省略部分内容
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.100.100 netmask 255.255.255.255
loop txqueuelen 1000 (Local Loopback)
省略部分内容
[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 192.168.100.100 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.100 dev lo:0
2.5.2, / proc 응답 매개 변수 조정
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost network-scripts]# sysctl -p
이전에 구성된 두 노드 서버가 동일합니다.
2.5.3, httpd 마운트 테스트 페이지 설치
아래에 두 개의 노드 서버를 별도로 마운트하십시오.
[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Aug 6 12:23:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=a1c935eb-f211-43a5-be35-2a9fef1f6a89 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
192.168.100.24:/opt/51xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd
로그인이 정상인지 테스트
[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/52xit /var/www/html/
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Aug 6 12:23:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=a1c935eb-f211-43a5-be35-2a9fef1f6a89 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
192.168.100.24:/opt/52xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd
로그인이 정상인지 테스트
2.6, 실험적 검증
2.6.1, 메인 스케줄러 테스트
패킷 캡처 도구를 열면 192.168.100.21의 마스터 스케줄러가 VRRP 패킷을 보내고 있음을 알 수
있습니다. 실제 시스템의 브라우저 에 192.168.100.100을
입력하고
마스터 스케줄러 를 새로 고치거나 다시 입력 할 때까지 잠시 기다리십시오 . ! !
2.6.2, 테스트 슬레이브 스케줄러
주 서버의 연결 유지 중지
[root@localhost keepalived]# systemctl stop keepalived
패킷 캡처 도구를 열면 192.168.100.20 슬레이브 스케줄러가 VRRP 패킷을 전송하고 있음을 알 수
있습니다. 실제 시스템의 브라우저 에 192.168.100.100을 입력
하고 새로 고침하거나 다시 입력
할 때까지 잠시 기다리 십시오. 스케줄러는 정상입니다! !