Centos7 LVS 로드 밸런싱 DR 모델 독립 실행형 및 고가용성 사례

1. 부하 분산 클러스터 유형

로드 밸런싱 기술 유형: 레이어 4 로드 밸런싱 기술 기반, 레이어 7 로드 밸런싱 기술 기반

로드 밸런싱 구현 방법: 하드웨어 로드 밸런싱 장비, 소프트웨어 로드 밸런싱

하드웨어 로드 밸런싱 제품: F5, Sangfor, Radware

소프트웨어 로드 밸런싱 제품: LVS(Linux Virtual Server), Haproxy, Nginx, Ats(apache 트래픽 서버)

2. LVS는 TCP/UDP 로드 밸런싱을 지원하는 4계층(전송 계층) 로드 밸런서입니다.

3계층 구조 : 로드 스케줄러, 서버 풀 및 공유 스토리지.

스키마 개체 :

  • VS : 가상 서버(디렉터라고도 함), 로드 밸런싱 서버
  • RS : Real Server, 실제 서버, 클러스터의 각 노드
  • VIP : 외부에 서비스를 제공하는 Director의 IP
  • DIP : Director가 내부적으로 RS와 통신
  • RIP : 실제 서버의 IP
  • CIP : 클라이언트 IP

3. LVS의 4가지 작동 모드

LVS-NAT(NAT 모드)

원리: 클라이언트는 요청 패킷을 로드 밸런서로 보내고(CIP->VIP), 로드 밸런서는 패킷을 수정하여 서버로 보내고(CIP->RIP), 서버는 처리 후 로드 밸런서로 패킷을 반환합니다. (RIP->CIP) 로드밸런서가 데이터 패킷을 재조정하여 클라이언트(VIP->CIP)에 반환하여 로드를 완료합니다.이 모드에서는 트래픽이 들어오거나 나가더라도 통과해야 합니다. 로드 밸런서.

LVS-DR(직접 라우팅 모드)

원칙: DR 모드를 구현하려면 RS가 LVS의 VIP에 바인딩되어야 하며 VIP는 외부가 아닌 단일 RS에 내부적으로만 표시되도록 보장됩니다. 요청이 로드 밸런서(CIP->VIP)에 도달하면 LVS는 네트워크 프레임의 MAC 주소를 특정 RS의 MAC으로 수정한 다음 처리를 위해 해당 RS로 패킷을 전달하기만 하면 됩니다. LVS Packet에서 전달된 메시지를 통해 Link Layer는 MAC이 자신의 MAC임을 확인하고, Network Layer에서는 IP도 자신의 IP(미리 연결되어 있는 LVS의 IP)임을 확인하여 패킷을 합법적으로 수신 , RS는 응답 시 LVS를 거치지 않고 클라이언트로 직접 반환합니다.
DR 모드 트래픽은 더 이상 lvs를 통과하지 않으며 반환값은 lvs를 한 번만 통과하면 클라이언트로 직접 반환될 수 있으므로 DR 모드는 성능이 가장 좋은 모드입니다.

LVS-TUN(IP 터널(Tunnel) 모드, 일반적으로 사용되지 않음)

원리: 로드밸런서는 클라이언트가 보낸 데이터 패킷(CIP->VIP)을 새로운 IP 헤더 마크(DIP-(CIP-VIP)-RIP)로 캡슐화하여 RS로 보낸다. 패킷의 헤더를 풀고 복원한다. RS는 로드밸런서에서 보낸 데이터 패킷을 복원해야 하므로 IPTUNNEL 프로토콜을 지원해야 하므로 RS 커널에서 , IPTUNNEL 옵션이 컴파일되고 지원되어야 합니다.

FULL-NAT 모드(일반적으로 사용되지 않는 양방향 변환 모드)

원칙: 클라이언트가 로드 밸런서 VIP(CIP->VIP)에 대한 요청을 시작하고, 로드 밸런서는 요청을 수신하고 백엔드 서비스에 대한 요청임을 확인하고, 요청 메시지에 대해 full-nat를 수행하고, 소스 IP를 변경합니다. DIP{로 대상 변경 ip는 백엔드 RS의 RIP로 변환된 후 백엔드로 전송되고 RS는 요청을 수신한 후 응답하며 응답 소스 ip는 RIP 대상 ip 또는 DIP입니다. , 내부 경로는 로드 밸런서로 라우팅되고 로드 밸런서는 응답 보고서 Text를 수신하고 full-nat를 수행합니다. 원본 주소를 VIP로, 대상 주소를 CIP로 변경하고 클라이언트로 돌아갑니다.

4. LVS 로드 밸런싱 알고리즘

정적 로드 밸런싱

  • rr(라운드 로빈, 폴링)

  • wrr(가중 라운드 로빈, 가중 라운드 로빈)

  • sh(소스 해싱, 소스 주소 HASH)

  • dh (목적지 해싱, 목적지 주소 HASH)


동적 로드 밸런싱

  • lc(리쉬 연결, 최소 연결)

    • 간단한 알고리즘: 활성 * 256 + 비활성(누구를 선택)
  • wlc(가중 최소 연결)

    • 간단한 알고리즘: (활성 * 256 + 비활성) / 가중치(누가 선택)
  • sed (최소 예상 지연)

    • 간단한 알고리즘: (활성 + 1) * 256 / 가중치(누가 선택)
  • nq(대기하지 않음, 대기하지 않음)

  • LBLC(지역 기반 최소 연결성)

  • LBLCR(복제를 통한 지역 기반 최소 연결성)

5. DR 모델 구축 실현

(1), 노드 준비
        node1: 192.168.2.168 ----로드 밸런서로

        노드2:192.169.2.136

        노드3:192.168.2.134

(2) 건물을 짓기 시작하다

 lvs 로드 밸런서 VIP 네트워크 하위 인터페이스 구성(node1)

ifconfig enp0s3:2 192.168.2.100/24
# 撤掉命令
ifconfig enp0s3:2 down

RS 서버 구성(node02, node03)

arp 프로토콜 수정(arp_ignore, arp_announce)

cd /proc/sys/net/ipv4/conf/enp0s3
# 修改协议(注意不可使用vi进行修改)
echo 1 > arp_ignore
echo 2 > arp_announce
# 查看是否修改成功
cat arp_ignore
cat arp_announce
# 退回到all目录进行全局修改
cd ../all
echo 1 > arp_ignore
echo 2 > arp_announce

숨겨진 vip 설정(node2\node3)

ifconfig lo:2 192.168.2.100 netmask 255.255.255.255

 http 서비스 구축(node2\node3)

# 安装httpd服务
yum install httpd -y
# 启动服务
service httpd start
# 创建主页(用于测试服务)
vi /var/www/html/index.html
# index填充内容node2
node2:form 192.168.2.136
# index填充内容node3
node3:form 192.168.2.134

 httpd 서비스가 성공했는지 테스트하기 위해 브라우저를 엽니다.

 LVS 서비스 구성(node01)

# 安装ipvsadm
yum install ipvsadm
# 配置LVS入口规则(采用轮询机制),IP为新创建的enp0s3:2对应ip
ipvsadm -A -t 192.168.2.100:80 -s rr
#配置出口规则(192.168.2.136\192.168.2.134 分别是node2、3的ip,分配权重为1)
ipvsadm -a  -t 192.168.2.100:80  -r  192.168.2.136 -g -w 1
ipvsadm -a  -t 192.168.2.100:80  -r  192.168.2.134 -g -w 1

구성이 성공했는지 확인

ipvsadm -ln

확인하다

브라우저 액세스 192.168.2.100, crazy F5, 브라우저가 node2와 node3 사이를 전환하는지 확인하십시오. netstat -natp 명령을 사용하여 node1~3의 소켓 연결을 각각 확인하십시오. node1에는 소켓 레코드가 없지만 node2 및 node3의 소켓 레코드입니다. 소켓 레코드는 로드 밸런서가 클라이언트와의 연결을 설정하지 않을 것임을 추가로 설명합니다.
6. DR+keepalived 고가용성 구축

(1) 노드 준비

        노드1: 192.168.2.168 --lvs 호스트

        노드2:192.169.2.136

        노드3:192.168.2.134

        node4: 192.168.2.181 --lvs 대기 머신

참고: 수동으로 빌드한 경우 lvs 독립 실행형 버전(node1)은 먼저 설치된 IP를 삭제할 수 있습니다.

# 卸载ipvsadm
ipvsadm -C
# 这里安装过enp0s3:2
ifconfig enp0s3:2 down

Node2 및 node3는 독립 실행형 버전의 구성을 켜진 상태로 유지합니다.

keeplived 설치(node1\node4)

# 安装keeplived服务
yum install keepalived ipvsadm -y
# 修改配置
cd /etc/keepalived/
# 备份配置文件
cp keepalived.conf keepalived.conf.bak
# 打开并修改配置文件
vi keepalived.conf
# 修改配置(node1为master配置,node4配置区别地方有特殊说明,其余地方和node相同)
# vrrp_strict # 注意一定要注解掉,否则配置的vip接口ping不通
vrrp_instance VI_1 {
    state MASTER   # node4 BACKUP
    interface enp0s3 # 设置自己虚拟机使用的虚拟网络
    virtual_router_id 51
    priority 100    # node4 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass root # 主备机服务器密码要设置一致
    }
    virtual_ipaddress {
        192.168.2.100/24 dev enp0s3label  enp0s3:2
    }
}

# 注意virtual_server 只保留一个
virtual_server 192.168.2.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR   # 负载模式设置成DR
    nat_mask 255.255.255.0 #设置子网掩码
    persistence_timeout 0 # 多少秒内访问同一个服务器
    protocol TCP

    real_server 192.168.2.136 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.2.134 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

keepalived.conf를 node4에 복사하고 해당 구성을 수정합니다. 위의 단계를 참조하세요(구분만 수정하세요).

scp  ./keepalived.conf  root@node04:`pwd`

keepalived 서비스 시작(node1\node4)

# 启动服务
systemctl start keepalived
# 停止服务
systemctl stop keepalived

확인: 브라우저 액세스는 성공을 나타내는 node2 또는 node3 홈 페이지 결과를 반환합니다.

Supongo que te gusta

Origin blog.csdn.net/qq_21875331/article/details/121746161
Recomendado
Clasificación