I was configuring MySQL Cluster where the application servers use a properties file to connect to the MySQL Data/Storage node (I configured both Data and Storage nodes on same physical server).
I want the application to use a single IP address, to access the DB servers in cluster. Since if any of the nodes fail, the application servers should still be able to query the databases.
Hence I thought of using LVS so that multiple application servers can access the DB servers through VIP. To achieve the same I have configured LVS, thought of sharing the same.
RHEL Linux LVS setup:
=====================
Pre-Requisites:
===============
REDHAT Linux Cluster Packages
VIRTUAL IP
Configuration for LB server:
============================
Configure packet forwarding on LB server
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 # change to 1,
Install piranha package from redhat cluster group
Once installed, configure the password:
# piranha-passwd
for autostart the LVS services, below are the commands
# chkconfig pulse on
# chkconfig piranha-gui on
# chkconfig httpd on
Start the http and piranha services
# service httpd start
# service piranha-gui start
Open http://localhost:3636 in a Web browser to access the Piranha Configuration Tool.
Click on the Login button and enter piranha for the Username and the administrative password you created in the Password field.
OR
Configure file to set up LVS
vi /etc/sysconfig/ha/lvs.cf # Sample configuration file for 11.1 and 11.4
serial_no = 47
primary = 172.16.11.1
service = lvs
backup_active = 1
backup = 172.16.11.4
heartbeat = 1
heartbeat_port = 539
keepalive = 3
deadtime = 6
network = direct
debug_level = NONE
monitor_links = 0
syncdaemon = 0
virtual MySQL {
active = 1
address = 172.16.11.10 bond0:1
vip_nmask = 255.255.255.255
port = 3306
expect = “UP”
use_regex = 1
send_program = “/root/mysql_mon.sh %h”
load_monitor = none
scheduler = wlc
protocol = tcp
timeout = 5
reentry = 3
quiesce_server = 0
server Server1 {
address = 172.16.11.2
active = 1
weight = 1
}
server Server2 {
address = 172.16.11.3
active = 1
weight = 1
}
}
Restart the pulse services on the LVS Routers
# service pulse restart
Verify the LVS. Check the ipvsadm entries:
[root@ServerLB|172.16.11.1~]~ # ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.11.10:mysql wlc
-> Server1 :mysql Route 1 0 0
-> Server2 :mysql Route 1 0 0
MySQL Real Servers configuration:
=================================
Run below commands on both the MySQL nodes
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
Configure loopback on both the MySQL nodes
ifconfig lo:0 172.16.11.10 netmask 255.255.255.255 up
OR (Permanent changes)
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.11.10
NETMASK=255.255.255.255
NETWORK=172.16.11.0
BROADCAST=172.16.11.255
ONBOOT=yes
NAME=loopback
To bring up the IP alias the ifup command is used:
/sbin/ifup lo
