LVS + cluster de alta disponibilidade Keepalived (teoria + implantação real)

Prefácio

Nesta era de TI altamente baseada em informações, o sistema de produção, operações de negócios, vendas e suporte e gerenciamento diário das empresas estão cada vez mais dependentes de informações e serviços de computador, o que aumentou muito a demanda por aplicativos de tecnologia de alta disponibilidade (HA). Para fornecer um sistema de computador ou serviços de rede contínuos e ininterruptos.
Use Keepalived para implementar backup dinâmico de sistema duplo, incluindo failover para endereços IP e aplicativos de backup dinâmico em clusters de alta disponibilidade LVS.

1. Noções básicas de backup ativo de sistema duplo Keepalived

1.1 Visão geral e instalação do Keepalived

1.1.1, Método de backup ativo Keepalived

Keepalived adota o protocolo de backup ativo VRRP para realizar a função de backup quente de várias máquinas do servidor Linux

VRRP, Virtual Routing Redundancy Protocol, é uma solução de backup para roteadores

Vários roteadores formam um grupo de backup dinâmico e fornecem serviços para o exterior por meio de um endereço IP virtual compartilhado

Apenas um roteador principal fornece serviço ao mesmo tempo em cada grupo de hot backup, e outros roteadores estão em estado redundante

Se o roteador online falhar, outros roteadores assumirão automaticamente o endereço IP virtual de acordo com a prioridade definida e continuarão a fornecer serviços
Insira a descrição da imagem aqui

1.1.2, instalação Keepalived e controle de serviço

Ao aplicar em um ambiente de cluster LVS, você também precisa usar a ferramenta de gerenciamento
YUM lipvsadm para instalar o Keepalived para
habilitar o serviço Keepalived

[root@localhost ~]# yum -y install keepalived ipvsadm

1.2. Use Keepalived para obter backup dinâmico de sistema duplo

Keepalived pode realizar backup hot em várias máquinas, cada grupo hot-standby pode ter vários servidores, o mais comumente usado é backup hot em duas máquinas

O failover do backup dinâmico de sistema duplo é realizado pela variação do endereço IP virtual, que é adequado para vários servidores de aplicativos

Esta implantação implementará backup dinâmico de máquina dupla com base em serviços da web
Insira a descrição da imagem aqui

1.2.1, a configuração do servidor principal

O diretório de configuração Keepalievd está localizado em / etc / keepalievd /
keepalievd.conf é o arquivo de configuração principal

[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),可以有多个,多个漂移地址以逗号分隔

Confirme se não há problema com a configuração, inicie o serviço Keepalived e você poderá visualizá-lo através do comando ip

[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址

1.2.2, a configuração do servidor em espera

A configuração do servidor de backup Keepalived é diferente da configuração mestre em três opções
router_id: definir como nome livre
estado: definir como
prioridade BACKUP : valor inferior ao do servidor mestre
Outras opções são iguais às do mestre

1.2.3, teste a função de backup quente de sistema duplo

Teste o efeito do backup dinâmico de sistema duplo As
máquinas principal e de backup estão habilitadas com serviços da Web e o conteúdo é o mesmo.
Desabilite e habilite a placa de rede do servidor principal sucessivamente e execute o seguinte teste

Teste 1: Use o ping para detectar a conectividade de 19216810.72
Teste 2: Visite http: /192168.10.72 para confirmar a disponibilidade e as mudanças de conteúdo
Teste 3: Verifique as mudanças no arquivo de log / var / log / messages

2. Implementação real do cluster de alta disponibilidade LVS + Keepalived

2.1. Ambiente experimental


Planejamento de endereço IP do servidor VMware 5 :
Endereço de desvio (VIP): 192.168.100.100
Agendador primário: 192.168.100.21
Agendador secundário: 192.168.100.20
Servidor WEB 1: 192.168.100.22
Servidor WEB 2: 192.168.100.23
Servidor de armazenamento : 192.168 . 100,24

2.2, configure o agendador principal

2.2.1, ajustar / parâmetros de resposta 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, ajustar os parâmetros de keepalived

[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, configure o agendador escravo

2.3.1, ajustar parâmetros de resposta / 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, ajustar os parâmetros de keepalived

[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, configurar servidor de armazenamento

Primeiro, verifique se nfs-utils e rpcbind estão instalados, se eles não estiverem instalados com yum
, inicie os dois serviços após a instalação

[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, configurar servidor de nó

2.5.1, configure o endereço IP virtual (VIP)

Tanto o firewall quanto a proteção do núcleo estão desligados, verifique se o nfs-utils está instalado

[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, ajustar / parâmetros de resposta 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

Os dois servidores de nó configurados anteriormente são os mesmos

2.5.3, instale a página de teste de montagem httpd

Monte dois servidores de nó separadamente abaixo

[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

Teste se o login é normal
Insira a descrição da imagem aqui

[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

Teste se o login é normal
Insira a descrição da imagem aqui

2.6, verificação experimental

2.6.1, teste o agendador principal

Abra a ferramenta de captura de pacotes, você verá que o agendador mestre de 192.168.100.21 está enviando pacotes VRRP
Insira a descrição da imagem aqui
. Digite 192.168.100.100 no navegador da máquina real
Insira a descrição da imagem aqui
e espere um minuto para atualizar ou reinsira o
Insira a descrição da imagem aqui
agendador mestre é normal! ! !

2.6.2, agendador escravo de teste

Pare o keepadlive do servidor principal

[root@localhost keepalived]# systemctl stop keepalived

Abra a ferramenta de captura de pacotes, você descobrirá que o agendador escravo 192.168.100.20 está enviando pacotes VRRP
Insira a descrição da imagem aqui
. Digite 192.168.100.100 no navegador da máquina real
Insira a descrição da imagem aqui
e espere um minuto para atualizar ou entrar novamente
Insira a descrição da imagem aqui
. O agendador está normal! !

Acho que você gosta

Origin blog.csdn.net/weixin_48191211/article/details/108749220
Recomendado
Clasificación