*Por favor, note que este é um artigo antigo de mais de um ano atrás. ※
Olá. Aqui é a Komiya da plataforma.
Desta vez, o ELB é caro, então vamos construir LVS porque é um começo pequeno. No começo, eu ia balancear tanto a WEB quanto o banco de dados com o LVS, mas no final, o lado da WEB acabou ficando com o ELB. (É difícil explicar aos clientes que é um NW de flat misto público-privado, e a conveniência de SSL, escala e operação, etc.) )
Pontos para ter cuidado mais do que o habitual: ・O ambiente é AWS (cuidado para não esquecer de recriar a instância e desativar o Change Source/Dest Check recriando casualmente a instância) ・DSR não pode ser feito se o cliente estiver over global (pacotes que não correspondem a ENI e IP são destruídos no roteador de borda) ・DSR não pode ser feito a menos que seja uma configuração NW plana (este é o comum, mas ponto a se deve ter cuidado) ・Circunstâncias especiais como a necessidade de instâncias NAT em múltiplas NW (então escolhi apenas uma) ・DB é distribuído por DSR e WEB é distribuído por NAT ・VIP pode ser usado, mas é necessário se comunicar com o servidor API e migrar para gerenciamento semelhante à AWS ・Para gerenciamento AWS, splitbrain praticamente não acontece, mas é necessário verificar a qual está conectado ・Multicast não pode ser usado devido a restrições da AWS, então a comunicação HA usa unicast ・Certificados são gerenciados pelo servidor web com licenças de balanceamento de carga
Índice: ・Configuração básica ・Configurações básicas no lado alvo de distribuição ・Teste unitário de balanceamento de carga com ipvsadm ・Configurações introdutórias de batimentos cardíacos ・Configurações introdutórias de ldirectord ・EIP ・Criação do PrivateIP moving shell ・Configurações de recursos ・Trabalho ao copiar instâncias ・Teste de troca ・Onde fiquei viciado
・Configuração básica
LVS01 (sistema principal) As leituras LVS02 (sistema de espera) 80, 443 e 3306 são distribuídas para 2 servidores web, 2 servidores de distribuição e 2 bases de dados, respectivamente.
lvs01:172.18.1.23 lvs02:172.18.1.25 db-r-vip:172.18.1.200 web-vip:172.18.1.199 db-client:web(local) web-client:any(global) real-db:172.18.1.220,221 real-web:172.18.1.33,34 método de distribuição web: método de distribuição de banco de dados NAT: DSR
No documento de design, ele foi dividido em segmentos frontais e traseiros, mas devido às especificações da AWS, precisava ser plano para combinar com LVS. ⇒ o servidor web onde o cliente está sobre o global é um roteador de borda, pacotes que não correspondem a ENI e IP são destruídos, então o método distribuído não pode ser DSR e apenas NAT pode ser usado. ⇒ Se o método de distribuição for NAT, o servidor real precisa especificar o servidor de balanceamento de carga como GW padrão ⇒ as instâncias NAT são especificações que só podem ter uma NIC, mas a GW padrão não pode ser especificada a menos que sejam do mesmo segmento ⇒ Pelo menos a WEB não pode ser balanceada em LVS+VPC sem um segmento, mas a distribuição de banco de dados e WEB são feitas juntas no mesmo LVS, e só existe um segmento NW agora, mas mesmo que não haja ⇒backsegment, é uma VPC, e mesmo que as configurações do SecurityGroup sejam decentes, está ok. O motivo de não ser HAproxy é porque ele é desconhecido em operação e o LVS parece ter melhor desempenho. Fico feliz que o DB sozinho possa ser DSR.
・Configurações básicas para o alvo de distribuição
Configurações WEB
vi /etc/sysconfig/network-script/ifcfg-eth0
*O seguinte é adicionado ao servidor web.
GATEWAY=172.18.1.199
*O servidor de distribuição é adicionado da seguinte forma.
GATEWAY=172.18.1.206
Reinício da rede de serviço
NetStat -RN
*Se houver necessidade de se comunicar com a API da AWS e obter IDs de instância com metadados, por favor, note que você não conseguirá obtê-los se mudar o GW.
Desative a "Verificação de Mudança de Fonte/Dest" no Console de Gerenciamento
Coloque o arquivo de cheque
Equilíbrio de eco 'uname -n' > /var/www/html/chk.html
vi /etc/rc.local
Equilíbrio de eco 'uname -n' > /var/www/html/chk.html
Configure os grupos de segurança corretamente e verifique suas operações pelo navegador
Configuração do lado do banco de dados Desativar o ARP no servidor do banco de dados e enviar a interface lo:0 (criar um alias para o loopback IF) (Também existe uma forma de rotear com iptables, mas estou preocupado com overhead, então uso lo:0)
vi /etc/sysctl.conf
# A referência LVS (DSR) não retorna arp no caso de objetos distribuídos
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
sysctl -p
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
------------------------------------------------
DEVICE=lo:0
TYPE=Ethernet
BOOTPROTO=nenhum
BROADCAST=172.18.1.200
IPADDR=172.18.1.200
NETMASK=255.255.255.255
REDE=172.18.1.200
NAME=loopback
ONPARENT=sim
PEERDNS=não
Habilitando a Interface
ifup lo:0
ifconfig -a lo:0
Desative a "Verificação de Mudança de Fonte/Dest" no Console de Gerenciamento
Testando a distribuição de referência do banco de dados em configurações WEB para DSR.
mysql -u root -p -h 172.18.1.200 -e mostrar variáveis globais como 'nome do host';
・Teste unitário de balanceamento de carga com ipvsadm
Primeiro, na tela do console AWS, desative o Change Source/Dest.Check para todas as instâncias LVS, WEB e DB.
Instalar ipvsadm
yum instalar ipvsadm
Ajuste de parâmetros do kernel (permite encaminhamento de pacotes e tem a função de um roteador)
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
vm.swappiness = 30
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192
net.ipv4.tcp_keepalive_intvl = 3
net.ipv4.tcp_keepalive_probes = 2
net.ipv4.tcp_keepalive_time = 10
sysctl -p
Adicionar um IP virtual
addr de ip add 172.18.1.200/24 brd 172.18.1.255 dev eth0
addr de ip add 172.18.1.199/24 brd 172.18.1.255 dev eth0
IP addr Show eth0
Configurações claras
ipvsadm -C
FATAL: Erro ao inserir ip_vs (/lib/modules/2.6.32-358.18.1.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko): Símbolo desconhecido no módulo, ou parâmetro desconhecido (ver dmesg)
Não é possível inicializar ipvs: Protocolo não disponível
Você tem certeza de que o IP Virtual Server está construído no kernel ou como módulo?
Se você receber um erro como o acima, desative o ipv6 da mesma forma que o link de referência (remover instalar ipv6 /bin/true) http://pocketstudio.jp/log3/2013/04/18/howto\_disable\_ipv6\_on\_centos/
vi /etc/modprobe.d/ipv6.conf
Opções IPv6 Disable=1
Configure manualmente Adicionar configurações distribuídas do lado do banco de dados
ipvsadm -A -t 172.18.1.200:3306
ipvsadm -a -t 172.18.1.200:3306 -r 172.18.1.220:3306 -g -w 10
Configurações distribuídas adicionadas no lado web
ipvsadm -A -t 172.18.1.199:80
ipvsadm -a -t 172.18.1.199:80 -r 172.18.1.33:80 -m -w 10
ipvsadm -L
Servidor Virtual IP versão 1.2.1 (tamanho=4096)
Prot LocalEndereço: Flags do Agendador de Portas
-> EndereçoRemota:Encaminhamento de Porta Peso AtivoConn InActConn
TCP 172.18.1.199:http wlc
-> 172.18.1.33:http Máscara 10 0 0
TCP db-r-vip:mysql wlc
-> 172.18.1.220:mysql Rota 10 0 0
Se quiser salvar as configurações, por favor clique na seguinte (ao iniciar o serviço ipvsadm)
Serviço IPvsadm Save
Desta vez vou usar o ldirectord, então tome cuidado porque se você não desativar o ipvsadm, vai iniciar dois e as configurações serão reescritas e você ficará confuso.
・Configurações de introdução do batimento cardíaco
Consulte o Linux-HA Japan http://linux-ha.sourceforge.jp/wp/dl/packages
CD /usr/local/src
O que http://ftp.iij.ad.jp/pub/sourceforge.jp/linux-ha/58548/pacemaker-1.0.13-1.1.el6.x86_64.repo.tar.gz
cp -a /usr/local/src/pacemaker*.tar.gz /tmp/
CD /tmp
VIRSION=1.0.13-1.1.el6
tar ZXVF pacemaker-$VIRSION.x86_64.repo.tar.gz
CD Pacemaker-$VIRSION.x86_64.repo
yum install perl-TimeDate PyXML libtool-ltdl OpenIPMI-libs lm_sensors-libs libesmtp
YUM -Y -C PACEMAKER.REPO INSTALAR corosync.x86_64 heartbeat.x86_64 pacemaker.x86_64 \
pm_diskd pm_extras pm_logconv-hb
vi /etc/yum.conf
exclude=kernel* pacemaker pacemaker-libs corosync cluster-glue heartbeat resource-agents
vi /etc/ha.d/ha.cf
========================================
CRM ligado
arquivo de registro /var/log/ha-log
#debugfile /var/log/ha-debug
Logfacility nenhuma
depuração 0
udpport 34694
Keepalive 2
Warntime 15
Deadtime 30
initdead 60
ucast eth0 172.18.1.23
auto_failback fora
nó lvs01
nó lvs02
uuidfrom nome do nó
watchdog /dev/watchdog
Respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set
ping 172.18.1.1
respawn root /usr/lib64/heartbeat/diskd -N /dev/xvde1 -a diskcheck_status_internal -i 10
#respawn monitor de root /etc/ha.d/monitoring/heartbeat_logmoni.sh
========================================
vi /etc/ha.d/authkeys
========================================
Auth 1
1 CRC
========================================
raiz chown:raiz /etc/ha.d/ha.cf
chown root:root /etc/ha.d/authkeys
chmod 600 /etc/ha.d/authkeys
scp /etc/ha.d/ha.cf lvs02:/etc/ha.d/.
scp /etc/ha.d/authkeys lvs02:/etc/ha.d/.
/etc/init.d/início do batimento cardíaco
crm_mon -1
・lDirectorord Configurações de Introdução
yum -y instalar ipvsadm perl-Socket6 perl-MailTools \
perl-Net-SSLeay perl-libwww-perl perl-IO-Socket-INET6 ldirectord
vi /etc/ha.d/ldirectord.cf
========================================
#Global Diretrizes
checktimeout=15
intervalo de verificação=30
autoreload=sim
logfile=/var/log/ldirectord.log
quiescent=não
# Virtual para HTTP
virtual = 172.18.1.199:80
real=172.18.1.33:80 masq 5 # web01
real=172.18.1.34:80 MASQ 5 # Web02
Fallback=172.18.1.71:80 Masq # Desculpa
chequetipo=negociar
service=http
request=chk.html
receber=saldo
scheduler=wrr
protocol=TCP
virtual = 172.18.1.206:80
real=172.18.1.44:80 masq 5 # mov01
real=172.18.1.45:80 Masq 5 # mov02
Fallback=172.18.1.71:80 Masq # Desculpa
chequetipo=negociar
service=http
request=chk.html
receber=saldo
scheduler=wrr
protocol=TCP
# Virtual para HTTPS
virtual = 172.18.1.199:443
real=172.18.1.33:443 masq 5 # web01
real=172.18.1.34:443 Masq 5 # Web02
Fallback=172.18.1.71:443 Masq # Desculpa
chequetipo=negociar
service=https
request=chk.html
receber=saldo
scheduler=wrr
persistente=600
protocol=TCP
# Serviço virtual MySQL.
virtual = 172.18.1.200:3306
real=172.18.1.220:3306 porta 4 # db01
real=172.18.1.221:3306 porta 2 # db01
service=mysql
scheduler=WLC
netmask=255.255.255.255
protocol=TCP
checktype=conectar
========================================
scp /etc/ha.d/ldirectord.cf lvs02:/etc/ha.d/.
chkconfig ldirectord desligado
chkconfig --list ldirectord
・Crie um shell móvel EIP/PrivateIP Parece que as ferramentas recentes em Python estão mais leves e melhores, então vou fazer isso a partir da configuração em Python.
O que http://peak.telecommunity.com/dist/ez_setup.py
Python ez_setup.py
easy_install pip
Instalação de Pip AWSCLI
AWS completo -C aws_completer
vi /root/.ec2/aws.config
-----
[padrão]
aws_access_key_id=AKIAIBLHWHEQNV*****
aws_secret_access_key=OyvqwLtDiB9HZQO44fJryv86t1vjvvmf*****
Região=AP-Nordeste-1
-----
Echo Export AWS_CONFIG_FILE=/root/.ec2/aws.config ~/.bash_profile
Echo completo -C aws_completer AWS ~/.bash_profile
export AWS_CONFIG_FILE=/root/.ec2/aws.config
Criando enquanto pesquisando comandos
Ajuda com endereços associados AWS EC2
Criação de Subcomandos
mkdir /opt/{bin,log}
vi /opt/bin/aws_eip_ctl.sh
gato /opt/bin/aws_eip_ctl.sh
-------------------
#!/lixo/batida
#
# aws_eip_ctl.sh: Remover ErasticIP e PrivateIP e concedê-los a instâncias locais
# Dependências: Comandos AWS
# Atualizado:20131001 - criar komiyay
#
se [ $# -lt 2 ]; então
O argumento do eco está faltando.
Uso do eco: $0 erastic_ip private_ip1.private_ip2
Saída 1
senão
:
fi
export PATH=$PATH:/usr/local/bin
export AWS_CONFIG_FILE=/root/.ec2/aws.config
## variáveis
EIP=$1
PIP='echo $2|sed -e 's/,/ /g''
PIP1='echo $2|awk -F, '{print $1}''
PIP2='echo $2|awk -F, '{print $2}''
MYinstanceID='/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id'
MY_ENI='aws ec2 describe-network-interfaces --filters Name=attachment.status,Values=attached,Name=attachment.instance-id,Values=$MYinstanceID|grep NetworkInterfaceId|awk '{print $2}'|sed -e 's/[,]//g''
## Dissociar Erastic-IP.
AWS EC2 Disassociate-Address --public-IP ${EIP}
## Desatribuir e atribuir IP-privado.
para i em $PIP; do
attached_ENI='aws ec2 describe-network-interfaces --filters Name=addresses.private-ip-address,Values=${i} |grep NetworkInterfaceId|awk '{print $2}'|sed -e 's/[,]//g''
se [ -n ${attached_ENI} ]; então
se [ ${attached_ENI} != ${MY_ENI} ]; então
Sono 2
AWS EC2 UNASSIGN-Private-IP-Addresses \
--network-interface-id ${attached_ENI} \
--endereços ip-privados ${i}
## Sleep para servidor API AWS.
Sono 18
AWS EC2 Assignar-Endereços-IP-privados \
--interface-rede-id ${MY_ENI} \
--endereços-ip-privados ${i} --permitir-reatribuição
senão
echo PrivateIP ${i} já está vinculado a esta instância.
fi
senão
echo PrivateIP ${i} não é uma instância de bind.
AWS EC2 Assignar-Endereços-IP-privados \
--interface-rede-id ${MY_ENI} \
--endereços-ip-privados ${i} --permitir-reatribuição
fi
Feito
Sono 2
## Associado
AWS EC2 Endereço-Associado --Instance-ID $MYinstanceID \
--public-ip ${EIP} --endereço-ip privado ${PIP1} --permitir-reassociação
Saída $?
-------------------
CHMOD 700 /opt/bin/aws_eip_ctl.sh
Aqui testamos a operação independente com bash -x.
Criar scripts de recursos compatíveis com LSB
vi /etc/init.d/eip_web
-------
#!/lixo/batida
#
# EIP Associado EIP.
#
# chkconfig: 2345 99 10
# descrição: EIP Associado
# Biblioteca de funções fonte.
. /etc/init.d/functions
ErasticIP=xxx.xxx.131.136
PrivateIP=172.18.1.199,172.18.1.200
prog=eip_web
lock=/var/lock/subsys/$prog
log=/opt/log/aws_error.log
# Configuração de origem
se [ -f /etc/sysconfig/$prog ] ; então
. /etc/sysconfig/$prog
fi
Caso $1 em
início)
echo 'date +%Y-%m-%d %T' begin associate-eip >> $log
toque $lock
/opt/bin/aws_eip_ctl.sh ${ErasticIP} ${PrivateIP} >> $log 2>&1
Saída $?
;;
pare)
echo 'date +%Y-%m-%d %T' end associate-eip >> $log
RM - F $lock
Saída $?
;;
status)
se [ -f $lock ]
então
saída 0
senão
Saída 3
fi
;;
*)
Echo $Usage: $0 {start|stop}
Saída 1
ESAC
-------
vi /etc/init.d/eip_mob
-------
#!/lixo/batida
#
# EIP Associado EIP.
#
# chkconfig: 2345 99 10
# descrição: EIP Associado
# Biblioteca de funções fonte.
. /etc/init.d/functions
ErasticIP=xxx.xxx.155.40
PrivateIP=172.18.1.206
prog=eip_mob
lock=/var/lock/subsys/$prog
log=/opt/log/aws_error.log
# Configuração de origem
se [ -f /etc/sysconfig/$prog ] ; então
. /etc/sysconfig/$prog
fi
Caso $1 em
início)
echo 'date +%Y-%m-%d %T' begin associate-eip >> $log
toque $lock
/opt/bin/aws_eip_ctl.sh ${ErasticIP} ${PrivateIP} >> $log 2>&1
Saída $?
;;
pare)
echo 'date +%Y-%m-%d %T' end associate-eip >> $log
RM - F $lock
Saída $?
;;
status)
se [ -f $lock ]
então
saída 0
senão
Saída 3
fi
;;
*)
Echo $Usage: $0 {start|stop}
Saída 1
ESAC
-------
chmod +x /etc/init.d/eip*
Copie o script acima para o secundário também.
・Configurações de Recursos
CRM
configurar
eip_web primitiva LSB:eip_web
eip_mob primitivo LSB:eip_mob
Editar
Agora edite o grupo de recursos da seguinte forma:
Grupo rg_LVS res_Mailto eip_mob eip_web res_VIPcheck_WEB res_VIP_WEB res_VIPcheck_MOB res_VIP_MOB res_VIPcheck_DB res_VIP_DB res_ldirectord
verificar
Comprometimento
Apresentação
nó $id=54CE2C1A-7647-851F-2146-E7F2Bde2FCE4 LVS02
nó $id=b6592742-bfd3-dcdf-63cc-8db63f4ea265 LVS01
primitivo eip_mob LSB:eip_mob \
Intervalo de início do op = 0s timeout = 120s on-fail = reiniciar \
Intervalo de parada do op = 0 timeout = 120s on_fail=bloco \
Intervalo do monitor do op = tempo de espera de 30s = 120s on_fail = reiniciar
eip_web primitivo LSB:eip_web \
Intervalo de início do op = 0s timeout = 120s on-fail = reiniciar \
Intervalo de parada do op = 0 timeout = 120s on_fail=bloco \
Intervalo do monitor do op = tempo de espera de 30s = 120s on_fail = reiniciar
primitivo res_Mailto ocf:heartbeat:MailTo \
params email=unyou-all@isao.net sujeito=(xxxx) \
op start intervalo=0 timeout=60s on_fail=reiniciar \
Intervalo do monitor op = 10s de tempo limite = 60s on_fail=reiniciar \
Intervalo de parada do OP=0 Timeout=60s on_fail=Bloco
primitive res_VIP_DB ocf:heartbeat:IPaddr2 \
parâmetros ip=172.18.1.200 nic=eth0 cidr_netmask=24 \
op start intervalo=0 timeout=60s on_fail=reiniciar \
Intervalo de parada do op = 0 timeout = 60s on_fail=bloco \
Intervalo do monitor do op = tempo de espera de 30s = 60s on_fail = reiniciar
primitive res_VIP_MOB ocf:heartbeat:IPaddr2 \
params ip=172.18.1.206 nic=eth0 cidr_netmask=24 \
op start intervalo=0 timeout=60s on_fail=reiniciar \
Intervalo de parada do op = 0 timeout = 60s on_fail=bloco \
Intervalo do monitor do op = tempo de espera de 30s = 60s on_fail = reiniciar
primitive res_VIP_WEB ocf:heartbeat:IPaddr2 \
params ip=172.18.1.199 nic=eth0 cidr_netmask=24 \
op start intervalo=0 timeout=60s on_fail=reiniciar \
Intervalo de parada do op = 0 timeout = 60s on_fail=bloco \
Intervalo do monitor do op = tempo de espera de 30s = 60s on_fail = reiniciar
primitiva res_VIPcheck_DB OCF:Heartbeat:VIPcheck \
params target_ip=172.18.1.200 contagem=1 espera=10 \
Intervalo de início do op = 0 timeout = 90s on_fail=bloco \
Intervalo de parada do OP=0 Timeout=90s on_fail=Bloqueio
primitivo res_VIPcheck_MOB ocf:heartbeat:VIPcheck \
params target_ip=172.18.1.206 contagem=1 espera=10 \
Intervalo de início do op = 0 timeout = 90s on_fail=bloco \
Intervalo de parada do OP=0 Timeout=90s on_fail=Bloqueio
primitivo res_VIPcheck_WEB ocf:heartbeat:VIPcheck \
params target_ip=172.18.1.199 contagem=1 espera=10 \
Intervalo de início do op = 0 timeout = 90s on_fail=bloco \
Intervalo de parada do OP=0 Timeout=90s on_fail=Bloqueio
res_ldirectord primitiva OCF:Heartbeat:lDirectord \
params configfile=/etc/ha.d/ldirectord.cf \
op start intervalo=0 timeout=60s on_fail=reiniciar \
Intervalo do monitor do op = tempo de espera de 30s = 60s on_fail = reiniciar \
Intervalo de parada da operação=0
Grupo rg_LVS res_Mailto eip_mob eip_web res_VIPcheck_WEB res_VIP_WEB res_VIPcheck_MOB res_VIP_MOB res_VIPcheck_DB res_VIP_DB res_ldirectord
Localização group_lvs-localização rg_LVS \
Regra $id=group_lvs-Location-Rule 200: #uname EQ LVS01 \
Regra $id=group_lvs-regra-localização-0 100: #uname EQ LVS02 \
Regra $id=group_lvs-Local-Regra 1 -inf: definido default_ping_set e default_ping_set LT 100
propriedade $id=cib-bootstrap-opções \
dc-version=1.0.13-30bb726 \
cluster-infrastructure=Heartbeat \
quórum-votos-esperados=2 \
no-quorum-policy=ignorar \
stonith-enabled=falso \
startup-fencing=false \
dc-deadtime=20s \
last-lrm-refresh=1380613160
rsc_defaults $id=rsc-options \
resource-stickiness=INFINITY \
limiar de migração=1
*Havia um tempo de espera para uma resposta ao servidor API da AWS, e levava bastante tempo para timeout, então o valor de timeout foi aumentado.
Esse é o fim da configuração, e o próximo passo é verificar a operação.
crm_mon -i1 -Af
・Operações ao copiar instâncias
vi /etc/ha.d/ha.cf
echo lvs02 > /proc/sys/kernel/hostname; bash
sed -i 's/lvs01/lvs02/g' /etc/sysconfig/network
reinício do rsyslog do serviço; cauda -f /var/log/mensagens
reiniciar o serviço postfix; cauda -f /var/log/maillog
ucast eth0 172.18.1.23
↓
ucast eth0 172.18.1.25
Início do batimento cardíaco do serviço
*Implemente primeiro pelo mestre e tenha recursos.
cauda -f /var/log/ha-log
・Teste de comutação
Ao confirmar com o comando de confirmação, baixe o batimento cardíaco e confirme a operação de comutação.
IP addr Show eth0
ipvsadm -Ln
crm_mon -i1 -Af
Ping para o IP representativo de fora
ping 172.18.1.199
ping 172.18.1.200
ping 172.18.1.206
・Onde eu fiquei viciado
O IPvsadm não funcionava a menos que o IPv6 estivesse desativado. Na AWS (VPC), o DSR era uma configuração plana e não podia ser feito a menos que o cliente estivesse no NW local. Esqueci de recriar a instância e defini "Alterar Fonte/Verificação de Dest" para Desabilitar. Por favor, note que, se você não anexar um EIP fixo a LVS além do EI flutuante, não poderá ir globalmente e se comunicar com o servidor da API. Se não for um EIP fixo, a comunicação global no início não será a tempo e o recurso não será iniciado. Se você for uma instância pequena, só pode conceder até 3 IPs privados a uma IF, então tenha cuidado, pois um erro de limite ocorrerá se houver um extra. Se você mudar o GW padrão para algo diferente do valor inicial, os metadados retornados pela API serão do GW, e você não conseguirá obter o local. Por motivos como comunicação com o servidor da API da AWS, o valor de timeout deve ser aumentado, então ele não será alterado corretamente.
・Existem muitos sites de referência, mas achei eles particularmente úteis. Referência LVS Linux Virtual Server Tutorial Stray Penguin - Linux Memo (Ultra Monkey) Heartbeat Reference: suz-lab - blog: Criação de um "Nat de Alta Disponibilidade" (CentOS6) Redundância do Servidor Asterisk na AWS com Heartbeat+Pacemaker - Blog do Engineer Serverworks Testando Configurações de Redundância com HeartBeat e Elastic IP - Informações do Blog do Engenheiro Serverworks sobre IP e GW Limites Comparação de Instâncias Amazon EC2 [Fedora] Quando você executa o comando de rota "SIOCADDRT: Não existe tal processo" erro - Vida com TI Linux - Desativar a função de descarregamento da NIC - Qiita [Keeta] Fiquei viciado em construir um balanceador de carga LVS+keepalived no CentOS 6 em um servidor DELL - Método Engenheiro de Infraestrutura - Powered by HEARTBEATS 2011-11-14-AWS_System_Design Em um ambiente com LVS DSR com SSL Como configurar múltiplos certificados SSL | Manuseio de Persistência Carpe Diem em LVS
Agora, pode haver vários pontos a serem explorados, como lidar com falhas de zona sem construir entre zonas. Pesquisei sobre VRRP, mas foi rejeitado por problemas de experiência operacional. Fico pensando se falhas de zona vão parecer trabalho duro manualmente com AMI e snapshot. Não tenho dinheiro, então acho que é como colocar tudo em um só lugar e priorizar a velocidade de comunicação.
Postei a história do tipo de configuração que fiz ao separar o lado WEB em ELB, então fique à vontade para fazer isso. Uma história sobre construir LVS em uma VPC
Obrigado por assistir ao que foi dito acima.