Last active
August 29, 2015 13:57
-
-
Save s-tajima/9464291 to your computer and use it in GitHub Desktop.
main config and rewrite script for HAproxy.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
global | |
log 127.0.0.1 local2 | |
chroot /var/lib/haproxy | |
pidfile /var/run/haproxy.pid | |
maxconn 1000 | |
user haproxy | |
group haproxy | |
daemon | |
stats socket /var/lib/haproxy/stats | |
defaults | |
mode tcp | |
log global | |
option tcplog | |
listen master | |
bind 127.0.0.1:3306 | |
mode tcp | |
retries 1 | |
timeout connect 10s | |
timeout client 5s | |
timeout server 20s | |
balance roundrobin | |
server node01 mysqlserver-a:3306 check port 3306 | |
listen slave | |
bind 127.0.0.1:3316 | |
mode tcp | |
retries 1 | |
timeout connect 10s | |
timeout client 5s | |
timeout server 20s | |
balance roundrobin | |
server node01 mysqlserver-b:3306 check port 3306 | |
server node01 mysqlserver-c:3306 check port 3306 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
global | |
log 127.0.0.1 local2 | |
chroot /var/lib/haproxy | |
pidfile /var/run/haproxy.pid | |
maxconn 1000 | |
user haproxy | |
group haproxy | |
daemon | |
stats socket /var/lib/haproxy/stats | |
defaults | |
mode tcp | |
log global | |
option tcplog | |
listen master | |
bind 127.0.0.1:3306 | |
mode tcp | |
retries 1 | |
timeout connect 10s | |
timeout client 5s | |
timeout server 20s | |
balance roundrobin | |
#option mysql-check user haproxy | |
server node01 <%= master_node %> check port 3306 | |
listen slave | |
bind 127.0.0.1:3316 | |
mode tcp | |
retries 1 | |
timeout connect 10s | |
timeout client 5s | |
timeout server 20s | |
balance roundrobin | |
#option mysql-check user haproxy | |
<%- slave_nodes.each do |slave_node| -%> | |
server node01 <%= slave_node %> check port 3306 | |
<%- end -%> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby | |
require 'pp' | |
require 'erb' | |
require 'optparse' | |
LOG_FILE = '/var/log/mha4mysql/rewrite_haproxy_config.log' | |
HAPROXY_CONFIG_FILE = '/etc/haproxy/haproxy.cfg' | |
HAPROXY_CONFIG_ERB = '/etc/haproxy/haproxy.cfg.erb' | |
CLUSTER_NODES = [ | |
'mysqlserver-a:3306', | |
'mysqlserver-b:3306', | |
'mysqlserver-c:3306' | |
] | |
$args = OptionParser.new do |parser| | |
parser.on('--command=VAL') | |
parser.on('--ssh_user=VAL') | |
parser.on('--orig_master_host=VAL') | |
parser.on('--orig_master_ip=VAL') | |
parser.on('--orig_master_port=VAL') | |
parser.on('--new_master_host=VAL') | |
parser.on('--new_master_ip=VAL') | |
parser.on('--new_master_port=VAL') | |
parser.on('--new_master_user=VAL') | |
parser.on('--new_master_password=VAL') | |
end.getopts | |
exit unless args["command"] == 'start' | |
master_node = "#{args["new_master_host"]}:#{args["new_master_port"]}" | |
slave_nodes = CLUSTER_NODES | |
slave_nodes.delete("#{args["new_master_host"]}:#{args["new_master_port"]}") | |
slave_nodes.delete("#{args["orig_master_host"]}:#{args["orig_master_port"]}") | |
erb = ERB.new(File.open(HAPROXY_CONFIG_ERB).read, nil, '-') | |
haproxy_config = File.open(HAPROXY_CONFIG_FILE, "w") | |
haproxy_config.write(erb.result(binding)) | |
haproxy_config.close | |
`/etc/init.d/haproxy reload` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment