hi. I have built mysql cluster with one management server, and its working fine but now I will need to do load balancing between them and decided to use heartbeat. downloaded rpm's, installed them and configured as it's in http://www.howtoforge.org/setting-up-a-loadbalanced-mysql-cluster-with-mysql5.1 my setup looks like this: management/loadbalancer IP 192.168.12.1 sql0(node0) 192.168.12.2 sql1(node1) 192.168.12.3 authkeys file auth 3 3 md5 somerandomstring ha.cf file debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 bcast eth1 mcast eth1 225.0.0.1 694 1 0 auto_failback off node sqlmgmt.myvideo.ge respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster ldirectord.cf file # Global Directives checktimeout=10 checkinterval=2 autoreload=no logfile="local0" quiescent=yes virtual = 192.168.12.10:3306 service = mysql real = 192.168.12.3:3306 gate real = 192.168.12.2:3306 gate checktype = negotiate login = "ldirector" passwd = "ldirectorpassword" database = "ldirectordb" request = "SELECT * FROM connectioncheck" scheduler = wrr haresources file sqlmgmt.myvideo.ge \ ldirectord::ldirectord.cf \ LVSSyncDaemonSwap::master \ IPaddr2::192.168.12.10/24/eth1/192.168.12.255 and it's not working... set up virtual addresses and kernel parameters on nodes are correct too... but heartbeat is not working here is complete debug output Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1796]: info: Version 2 support: false Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1796]: WARN: Logging daemon is disabled --enabling logging daemon is recommended Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1796]: info: ************************** Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1796]: info: Configuration validated. Starting heartbeat 2.99.4 Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: heartbeat: version 2.99.4 Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Heartbeat generation: 1252138489 Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: glib: UDP Broadcast heartbeat started on port 694 (694) interface eth1 Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1800]: info: Stack hogger failed 0xffffffff Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1801]: info: Stack hogger failed 0xffffffff Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: glib: UDP Broadcast heartbeat closed on port 694 interface eth1 - Status: 1 Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: glib: UDP multicast heartbeat started for group 225.0.0.1 port 694 interface eth1 (ttl=1 loop=0) Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1803]: info: Stack hogger failed 0xffffffff Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: G_main_add_TriggerHandler: Added signal manual handler Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: G_main_add_TriggerHandler: Added signal manual handler Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: G_main_add_SignalHandler: Added signal handler for signal 17 Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Stack hogger failed 0xffffffff Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Comm_now_up(): updating status to active Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Local status now set to: 'active' Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Starting child client "/usr/lib/heartbeat/ipfail" (497,487) Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Local status now set to: 'up' Sep 07 10:31:02 sqlmgmt.myvideo.ge heartbeat: [1805]: info: Starting "/usr/lib/heartbeat/ipfail" as uid 497 gid 487 (pid 1805) Sep 07 10:31:02 sqlmgmt.myvideo.ge ipfail: [1805]: debug: PID=1805 Sep 07 10:31:02 sqlmgmt.myvideo.ge ipfail: [1805]: debug: Signing in with heartbeat Sep 07 10:31:02 sqlmgmt.myvideo.ge ipfail: [1805]: debug: [We are sqlmgmt.myvideo.ge] Sep 07 10:31:03 sqlmgmt.myvideo.ge heartbeat: [1802]: info: Stack hogger failed 0xffffffff Sep 07 10:31:03 sqlmgmt.myvideo.ge heartbeat: [1804]: info: Stack hogger failed 0xffffffff Sep 07 10:31:03 sqlmgmt.myvideo.ge heartbeat: [1797]: info: Link sqlmgmt.myvideo.ge:eth1 up. Sep 07 10:31:03 sqlmgmt.myvideo.ge ipfail: [1805]: debug: auto_failback -> 0 (off) Sep 07 10:31:03 sqlmgmt.myvideo.ge ipfail: [1805]: debug: Setting message filter mode Sep 07 10:31:04 sqlmgmt.myvideo.ge ipfail: [1805]: debug: Starting node walk Sep 07 10:31:04 sqlmgmt.myvideo.ge ipfail: [1805]: debug: Cluster node: sqlmgmt.myvideo.ge: status: up Sep 07 10:31:05 sqlmgmt.myvideo.ge ipfail: [1805]: debug: Setting message signal Sep 07 10:31:05 sqlmgmt.myvideo.ge ipfail: [1805]: debug: Waiting for messages... Sep 07 10:31:06 sqlmgmt.myvideo.ge ipfail: [1805]: info: Link Status update: Link sqlmgmt.myvideo.ge/eth1 now has status up I dunno what to do now.. any suggestions? regards
Hi, I'm not using ldirector for MySQL, however you could just try the following: virtual = 192.168.12.10:3306 real = 192.168.12.3:3306 gate 1 real = 192.168.12.2:3306 gate 2 checktimeout=10 protocol=tcp scheduler=rr Try just that without all the negotiate stuff. If it polls tcp:3306 and nothing answers, it's going to fail out. I'm sure there are advantages to doing a full on negotiated connection but for the time being (just to get it to work) simple TCP should do the trick. Like I said, never tried it with MySQL but I mean it IS just a service - Chris
I have changed my ldirector conf file to this checktimeout=10 checkinterval=2 autoreload=no logfile="local0" quiescent=yes virtual = 192.168.12.10:3306 real = 192.168.12.3:3306 gate 1 real = 192.168.12.2:3306 gate 2 scheduler = rr not its complaining that for mysql i have to specify user/pass/query Sep 9 03:42:02 sqlmgmt ldirectord[1708]: Error: Must specify a login and request string for MySQL, Oracle and PostgreSQL checks. Not adding 192.168.12.3.