==== LDAP Load Balancing ==== # yum install ipvsadm IP virtual que sera utilizado no cluster LDAP: # vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=192.0.2.199 BROADCAST=192.0.2.199 NETMASK=255.255.255.255 # ifdown eth1 && ifup eth1 Implementar Load Balancer na porta 389: # ipvsadm -A -t 192.0.2.199:389 -s rr # ipvsadm -a -t 192.0.2.199:389 -r 192.0.2.110 -g -w 1 # ipvsadm -a -t 192.0.2.199:389 -r 192.0.2.111 -g -w 1 Ative o repasse de pacotes através do arquivo /etc/sysctl.conf # vim /etc/sysctl.conf [...] net.ipv4.ip_forward = 1 [...] # sysctl -p Para monitorar as conexões execute o comando ipvsadm: # ipvsadm -L -n --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 192.0.2.199:389 0 0 0 0 0 -> 192.0.2.110:389 0 0 0 0 0 -> 192.0.2.111:389 0 0 0 0 0 Para definir esta configuração durante o boot, use o comando ipvsadm-save para salvar as regras em /etc/sysconfig/ipvsadm # service ipvsadm save ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ] # cat /etc/sysconfig/ipvsadm -A -t 192.0.2.199:389 -s rr -a -t 192.0.2.199:389 -r 192.0.2.110:389 -g -w 1 -a -t 192.0.2.199:389 -r 192.0.2.111:389 -g -w 1 ==== Configurar servidores LDAP ==== * Executar nas máquinas LDAP Master 01 e LDAP Master 02 Para começar vamos configurar que o kernel Linux, não deve mais responder a solicitações ARP na rede nos servidores LDAP. # vim /etc/sysctl.conf [...] net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 # sysctl -p net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 O próximo passo é configurar o IP virtual na interface lo:0 no servidores LDAP. # cat /etc/network/interfaces [...] auto lo:0 iface lo:0 inet static address 192.0.2.199 netmask 255.255.255.255 [...] ==== Testando o Load Balancer ==== * O teste será feito no servidor slave [[master-slave|Replicações Master-Slave]] Vamos editar o arquivo de configuração da replicação Slave alterando o nome do servidor: # cat repica-slave.ldif dn: olcdatabase={1}hdb,cn=config changetype: modify replace: olcsyncRepl olcsyncrepl: rid=003 provider=ldap://lvs.laboratorio.com.br type=refreshAndPersist interval=00:00:00:10 searchbase=dc=laboratorio,dc=com,dc=br filter="(objectClass=*)" scope=sub attrs="*" schemachecking=off bindmethod=simple starttls=yes tls_cacert=/etc/ldap/tls/cacert.pem binddn=cn=Replicator,dc=laboratorio,dc=com,dc=br credentials=4linux retry="10 +" # ldapmodify -x -D cn=admin,cn=config -w senha -f repica-slave.ldif modifying entry "olcdatabase={1}hdb,cn=config" Para testar a Replicação com LVS, pare o servidor e remova a base: # service slapd stop # rm -rf /var/lib/ldap/* Reinicie o LDAP do servidor ldapmaster01 e veja que nossa base no slave já está populada: # service slapd start # ldapsearch -x -LLL -b dc=laboratorio,dc=com,dc=br -ZZ dn: dc=laboratorio,dc=com,dc=br objectClass: top objectClass: dcObject objectClass: organization o: laboratorio.com.br dc: laboratorio dn: cn=admin,dc=laboratorio,dc=com,dc=br objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator dn: o=matriz,dc=laboratorio,dc=com,dc=br o: matriz objectClass: organization objectClass: top dn: o=filial,dc=laboratorio,dc=com,dc=br o: filial objectClass: organization objectClass: top dn: ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br ou: Usuarios objectClass: organizationalUnit objectClass: top dn: ou=Usuarios,o=filial,dc=laboratorio,dc=com,dc=br ou: Usuarios objectClass: organizationalUnit objectClass: top dn: cn=Tim Berners-Lee,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br uid: timb cn: Tim Berners-Lee sn: timb objectClass: inetOrgPerson objectClass: posixAccount loginShell: /bin/bash uidNumber: 1021 gidNumber: 1021 homeDirectory: /home/timb dn: ou=Computadores,o=matriz,dc=laboratorio,dc=com,dc=br ou: Computadores objectClass: organizationalUnit objectClass: top dn: ou=Agendas,o=matriz,dc=laboratorio,dc=com,dc=br ou: Agendas objectClass: organizationalUnit objectClass: top dn: ou=Grupos,o=filial,dc=laboratorio,dc=com,dc=br ou: Grupos objectClass: organizationalUnit objectClass: top dn: ou=Computadores,o=filial,dc=laboratorio,dc=com,dc=br ou: Computadores objectClass: organizationalUnit objectClass: top dn: ou=Agendas,o=filial,dc=laboratorio,dc=com,dc=br ou: Agendas objectClass: organizationalUnit objectClass: top dn: ou=restrito,ou=Agendas,o=filial,dc=laboratorio,dc=com,dc=br ou: restrito objectClass: organizationalUnit objectClass: top dn: cn=Linus Torvalds da Silva,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=b r uid: linust sn: linust objectClass: inetOrgPerson objectClass: posixAccount homeDirectory: /home/linust loginShell: /bin/bash uidNumber: 1020 gidNumber: 1020 cn: Linus Torvalds da Silva dn: ou=Grupos,o=matriz,dc=laboratorio,dc=com,dc=br ou: Grupos objectClass: organizationalUnit objectClass: top dn: cn=Replicator,dc=laboratorio,dc=com,dc=br objectClass: simpleSecurityObject objectClass: organizationalRole cn: Replicator description: LDAP Replicator