fixed replication to third node, add qpid timeout
This commit is contained in:
parent
014c3f95c3
commit
1ddd0d4afd
27
deployment/puppet/mysql/files/id_rsa_mysql
Normal file
27
deployment/puppet/mysql/files/id_rsa_mysql
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAnvyc74wvsyfNHdabKeVy+GAXUiFE2lTMx5QvLL6bU8oyMpeL
|
||||
z6bbu60MWrpB3cCy/h1CM5xLmcKaPdfd1ZJTzTd0IlCkHvkISyGScDDqfvQ7rG94
|
||||
bx8DYc+GfROQ7+uDdynLxZVyHe5i9CYlj7V2HwXqRmtAhoHpRMhLUUsm1/WvosPG
|
||||
hg9T9YQz1F802GbH/6lAuOgPmqQsIDPSliGp4SIJzuIvbVgI1OvVCacwpw0+vlBo
|
||||
5/IvI6+iz6z081NODcZkBy+JlPPHFrjMGppIVNVvDhLbWMZuZ2f1XYtwL4IBXRNh
|
||||
9pZnjF1CyIlc3sJQ7cZrEX3aigXY4K7uTV1/cQIBIwKCAQEAg7tddgZwqmLOhm/8
|
||||
6DMkvysMAjjSpkZDRkeUzU15Yq7ZIprS7eIGhY9iAggKsGx3DRDttbwEIFDI8Wm3
|
||||
zjdqAc7ckXYEVC1tRZDYa5Y+o7Rr9UZrGj5EoYAQWQGVWROY0HMWjcT4J22/tFof
|
||||
H001/HKdis3lAbwZDRr8k9CN5iIIbbRHOicLsBNEepzx2HP7KBvGaNskCk9B/EUK
|
||||
Ph5ZvtW4pIGQzCWm4blrdy1Pk+sg1yrfOuNtYsfVbkGgIgogM6QhbYPHCfIgCu5D
|
||||
iydj2VOUSmGyYO44BxuBpZ/rlh6SAVAZQOmDQgm4grCGaT/6OZGOi1lPhNNi1WVC
|
||||
Y3s7iwKBgQDR8hF9gTjZb1g0ucDU0b8BlNMueUAbt4ABbVSK2KTec1ZIGhmz5H3K
|
||||
KnaBHZ9zqgPJy1dB4d9kRI4twSLFU9IkRm+k1xexnEpCRnOjunFLA1O6KnYo+SCd
|
||||
5kQDmjIcoXCbIeF6Rr02y4I+fHQk/KMZt8f1QX7HZbe6HeHOwpfBsQKBgQDB3Ni1
|
||||
QxFJG5koCw0Y1UfvkrSMuEcyUkjst1/RcoRNddKlEY02tcdJHnI8Jzr718GLG20i
|
||||
b42NeZFh0BesJvlbMLzLzzsCPBteJC5s7S5qVAsuDkFFBSU0m99vxn3WH4KStTJW
|
||||
cylLt8Z1D3Ui54KNoRD+veK7/5WepsWsG4lJwQKBgQC/80Mw6yypil9GJiylUg24
|
||||
TY3hWOon+DqE9j6q1LP+lVYzSxAvcdIX7E8W9oMn6+Y01ys068Tt9YlOZ3A/YpQ+
|
||||
bEjROa9DTRCxn3+royXA7RlZwGwINDsUBbqG82EEO9SrF6mUXe7TAzVAcclGY1NK
|
||||
tqgwsOjw0gcQkFlslKgBiwKBgQC2yOmU9hecs58If3K/pIWnXm+34PKryez8cmGo
|
||||
OMXiokpD3VlCNlzP6YGmbiGrn4qZGdvtRJtoIin9I0mFDs3ZovsmkDBSkHGTRq9u
|
||||
BDMTy5WDMgMGj9KfUSMgPs5qzUCY8/xC4Zv27xoz21/Qc+F+OMbhjnaxQW/QGZXO
|
||||
KJdiywKBgQDCWsbn20xE/Ej9QjGgPa5o8z93x6xXHwGaB6g4O9eqYzWMzBKRNYw0
|
||||
2SmYPPGg8Itzuz2xhQ7CPXVlhZndYXPsu+PJcCSdXhR1EIa5sFRYIWRWkVqEY/2l
|
||||
Ym+IUuIuFuSTrVs/1+xYxgUPoIw+H8fwwE5idRSOaJ0AYzP+DlUP4A==
|
||||
-----END RSA PRIVATE KEY-----
|
1
deployment/puppet/mysql/files/id_rsa_mysql.pub
Normal file
1
deployment/puppet/mysql/files/id_rsa_mysql.pub
Normal file
@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvyc74wvsyfNHdabKeVy+GAXUiFE2lTMx5QvLL6bU8oyMpeLz6bbu60MWrpB3cCy/h1CM5xLmcKaPdfd1ZJTzTd0IlCkHvkISyGScDDqfvQ7rG94bx8DYc+GfROQ7+uDdynLxZVyHe5i9CYlj7V2HwXqRmtAhoHpRMhLUUsm1/WvosPGhg9T9YQz1F802GbH/6lAuOgPmqQsIDPSliGp4SIJzuIvbVgI1OvVCacwpw0+vlBo5/IvI6+iz6z081NODcZkBy+JlPPHFrjMGppIVNVvDhLbWMZuZ2f1XYtwL4IBXRNh9pZnjF1CyIlc3sJQ7cZrEX3aigXY4K7uTV1/cQ== root@nailgun.mirantis.com
|
1296
deployment/puppet/mysql/files/ocf-mysql
Executable file
1296
deployment/puppet/mysql/files/ocf-mysql
Executable file
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,140 @@
|
||||
define mysql::replicator ($user, $password) {
|
||||
database_user { "${user}@${name}":
|
||||
password_hash => mysql_password($password),
|
||||
provider => 'mysql',
|
||||
class mysql::replicator (
|
||||
$node_address = $::ipaddress,
|
||||
$node_addresses = [$node_address],
|
||||
$service_name = $mysql::params::service_name,
|
||||
$rep_user = 'replicator',
|
||||
$rep_pass = 'replicant666',
|
||||
$replication_roles = "SELECT, PROCESS, FILE, SUPER, REPLICATION CLIENT, REPLICATION SLAVE, RELOAD",
|
||||
|
||||
) {
|
||||
|
||||
#corosync service order
|
||||
Cs_commit['mysql'] -> Service['mysqld']
|
||||
Cs_property <||> -> Cs_shadow <||>
|
||||
Cs_shadow['mysql'] -> Service['mysqld']
|
||||
Cs_commit <| title == 'internal-vip' |> -> Cs_shadow['mysql']
|
||||
|
||||
$allowed_hosts = '%'
|
||||
#$allowed_hosts = 'localhost'
|
||||
|
||||
|
||||
|
||||
Class['mysql::config'] -> Cs_resource['p_mysql']
|
||||
|
||||
|
||||
Class['openstack::corosync'] -> Cs_resource['p_mysql']
|
||||
|
||||
file { "/tmp/repl_create.sql" :
|
||||
ensure => present,
|
||||
content => template("mysql/repl_create.sql.erb"),
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
|
||||
### Start hacks
|
||||
} ->
|
||||
file { '/usr/lib/ocf/resource.d/heartbeat/mysql':
|
||||
ensure => present,
|
||||
source => 'puppet:///modules/mysql/ocf-mysql',
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0755,
|
||||
} ->
|
||||
file { '/root/.ssh/id_rsa_mysql':
|
||||
ensure => present,
|
||||
source => 'puppet:///modules/mysql/id_rsa_mysql',
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0600,
|
||||
} ->
|
||||
file { '/root/.ssh/id_rsa_mysql.pub':
|
||||
ensure => present,
|
||||
source => 'puppet:///modules/mysql/id_rsa_mysql.pub',
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
} ->
|
||||
exec { 'add_mysql_ssh_pubkey':
|
||||
command => 'cat /root/.ssh/id_rsa_mysql.pub > /root/.ssh/authorized_keys2 && chmod 600 /root/.ssh/authorized_keys2',
|
||||
path => '/bin:/usr/bin:/sbin:/usr/sbin',
|
||||
unless => 'test -f /root/authorized_keys2 && grep -q "$(cat /root/.ssh/id_rsa.mysql.pub)" /root/authorized_keys2',
|
||||
}
|
||||
database_grant { "${user}@${name}":
|
||||
privileges => ['Super_priv'],
|
||||
provider => 'mysql',
|
||||
require => Database_user["${user}@${name}"]
|
||||
#Sync from second host (first slave) to second slave
|
||||
#Refer to: http://dev.mysql.com/doc/refman/5.1/en/replication-howto-additionalslaves.html
|
||||
#TODO refactor to support >3 nodes
|
||||
if ( $::hostname == $node_addresses[2] ) or ( $node_address == $node_addresses[2] ) {
|
||||
$existing_slave = $node_addresses[1]
|
||||
exec { 'stop_mysql_slave_on_second_controller':
|
||||
command => "ssh -i /root/.ssh/id_rsa_mysql -o StrictHostKeyChecking=no root@${existing_slave} 'mysql -NBe \"stop slave;\"'",
|
||||
require => Exec['add_mysql_ssh_pubkey'],
|
||||
unless => "mysql -NBe 'show slave status;' | grep -q ${rep_user}",
|
||||
before => Exec['copy_mysql_data_dir'],
|
||||
}
|
||||
exec { 'copy_mysql_data_dir':
|
||||
command => "rsync -e 'ssh -i /root/.ssh/id_rsa_mysql -o StrictHostKeyChecking=no' -vaz root@${existing_slave}:/var/lib/mysql/. /var/lib/mysql/.",
|
||||
require => Exec['add_mysql_ssh_pubkey'],
|
||||
unless => "mysql -NBe 'show slave status;' | grep -q ${rep_user}",
|
||||
} ->
|
||||
exec { 'start_mysql_slave_on_second_controller':
|
||||
command => "ssh -i /root/.ssh/id_rsa_mysql -o StrictHostKeyChecking=no root@${existing_slave} 'mysql -NBe \"start slave;\"'",
|
||||
require => Exec['add_mysql_ssh_pubkey'],
|
||||
unless => "mysql -NBe 'show slave status;' | grep -q ${rep_user}",
|
||||
}
|
||||
}
|
||||
|
||||
cs_shadow { 'mysql': cib => 'mysql' } ->
|
||||
cs_resource { "p_mysql":
|
||||
ensure => present,
|
||||
primitive_class => 'ocf',
|
||||
provided_by => 'heartbeat',
|
||||
primitive_type => 'mysql',
|
||||
cib => 'mysql',
|
||||
multistate_hash => {'type'=>'master'},
|
||||
ms_metadata => {'notify' => "true"},
|
||||
parameters => {
|
||||
'binary' => "/usr/bin/mysqld_safe",
|
||||
'test_table' => 'mysql.user',
|
||||
'replication_user' => $rep_user,
|
||||
'replication_passwd' => $rep_pass,
|
||||
'additional_parameters' => '"--init-file=/tmp/repl_create.sql"',
|
||||
},
|
||||
operations => {
|
||||
'monitor' => { 'interval' => '20', 'timeout' => '30' },
|
||||
'start' => { 'timeout' => '360' },
|
||||
'stop' => { 'timeout' => '360' },
|
||||
'promote' => { 'timeout' => '360' },
|
||||
'demote' => { 'timeout' => '360' },
|
||||
'notify' => { 'timeout' => '360' },
|
||||
}
|
||||
}->
|
||||
|
||||
|
||||
cs_commit { 'mysql': cib => 'mysql' } ->
|
||||
|
||||
service { 'mysqld':
|
||||
name => "p_${service_name}",
|
||||
ensure => 'running',
|
||||
enable => true,
|
||||
require => [Package['mysql-server'], Cs_commit['mysql']],
|
||||
provider => 'pacemaker',
|
||||
}
|
||||
|
||||
#Tie internal-vip to p_mysql
|
||||
cs_colocation { 'mysql_to_internal-vip':
|
||||
primitives => ['internal-vip','master_p_mysql:Master'],
|
||||
score => 'INFINITY',
|
||||
require => [Cs_resource['p_mysql'], Cs_commit['mysql']],
|
||||
}
|
||||
|
||||
# Not used because we need to start mysql for the first time
|
||||
# with corosync with init script to create users
|
||||
# database_user { "${user}@${name}":
|
||||
# password_hash => mysql_password($password),
|
||||
# provider => 'mysql',
|
||||
# }
|
||||
# database_grant { "${user}@${name}":
|
||||
# privileges => ['Super_priv'],
|
||||
# provider => 'mysql',
|
||||
# require => Database_user["${user}@${name}"]
|
||||
# }
|
||||
}
|
||||
|
@ -29,11 +29,11 @@ class mysql::server (
|
||||
$mysql_skip_name_resolve = false,
|
||||
$use_syslog = false,
|
||||
$server_id = $mysql::params::server_id,
|
||||
$replication_roles = "SELECT, PROCESS, FILE, SUPER, REPLICATION CLIENT, REPLICATION SLAVE, RELOAD",
|
||||
$rep_user = 'replicator',
|
||||
$rep_pass = 'replicant666',
|
||||
) inherits mysql::params {
|
||||
|
||||
|
||||
Exec {path => '/usr/bin:/bin:/usr/sbin:/sbin'}
|
||||
if ($custom_setup_class == undef) {
|
||||
include mysql
|
||||
Class['mysql::server'] -> Class['mysql::config']
|
||||
@ -69,20 +69,12 @@ class mysql::server (
|
||||
elsif ($custom_setup_class == 'pacemaker_mysql') {
|
||||
include mysql
|
||||
Package[mysql-server] -> Class['mysql::config']
|
||||
Package[mysql-client] -> Package[mysql-server]
|
||||
Cs_commit['mysql'] -> Service['mysqld']
|
||||
Cs_property <||> -> Cs_shadow <||>
|
||||
Cs_shadow['mysql'] -> Service['mysqld']
|
||||
Cs_commit <| title == 'internal-vip' |> -> Cs_shadow['mysql']
|
||||
|
||||
Package[mysql-client] -> Package['mysql-server']
|
||||
Class['mysql::config'] -> Class['mysql::replicator']
|
||||
$config_hash['custom_setup_class'] = $custom_setup_class
|
||||
$allowed_hosts = '%'
|
||||
#$allowed_hosts = 'localhost'
|
||||
|
||||
|
||||
|
||||
create_resources( 'class', { 'mysql::config' => $config_hash })
|
||||
Class['mysql::config'] -> Cs_resource['p_mysql']
|
||||
|
||||
|
||||
if !defined(Package[mysql-client]) {
|
||||
package { 'mysql-client':
|
||||
@ -93,65 +85,14 @@ class mysql::server (
|
||||
package { 'mysql-server':
|
||||
name => $package_name,
|
||||
}
|
||||
|
||||
|
||||
Class['openstack::corosync'] -> Cs_resource['p_mysql']
|
||||
|
||||
# #cs_rsc_defaults { "resource-stickiness":
|
||||
# # ensure => present,
|
||||
# # value => '110',
|
||||
# #}->
|
||||
# cs_commit { 'mysqlvip' : cib => "mysqlvip" } ->
|
||||
|
||||
file { "/tmp/repl_create.sql" :
|
||||
ensure => present,
|
||||
content => template("mysql/repl_create.sql.erb"),
|
||||
} ->
|
||||
|
||||
cs_shadow { 'mysql': cib => 'mysql' } ->
|
||||
cs_resource { "p_mysql":
|
||||
ensure => present,
|
||||
primitive_class => 'ocf',
|
||||
provided_by => 'heartbeat',
|
||||
primitive_type => 'mysql',
|
||||
cib => 'mysql',
|
||||
multistate_hash => {'type'=>'master'},
|
||||
ms_metadata => {'notify'=>"true"},
|
||||
parameters => {
|
||||
'binary' => "/usr/bin/mysqld_safe",
|
||||
'test_table' => 'mysql.user',
|
||||
'replication_user' => $rep_user,
|
||||
'replication_passwd' => $rep_pass,
|
||||
'additional_parameters' => '"--init-file=/tmp/repl_create.sql"',
|
||||
},
|
||||
operations => {
|
||||
'monitor' => { 'interval' => '20', 'timeout' => '30' },
|
||||
'start' => { 'timeout' => '360' },
|
||||
'stop' => { 'timeout' => '360' },
|
||||
'promote' => { 'timeout' => '360' },
|
||||
'demote' => { 'timeout' => '360' },
|
||||
'notify' => { 'timeout' => '360' },
|
||||
}
|
||||
}->
|
||||
|
||||
|
||||
cs_commit { 'mysql': cib => 'mysql' } ->
|
||||
|
||||
service { 'mysqld':
|
||||
name => "p_${service_name}",
|
||||
ensure => 'running',
|
||||
enable => true,
|
||||
require => [Package['mysql-server'], Cs_commit['mysql']],
|
||||
provider => 'pacemaker',
|
||||
class { 'mysql::replicator':
|
||||
node_addresses => $galera_nodes,
|
||||
node_address => $galera_node_address,
|
||||
service_name => $service_name,
|
||||
rep_user => $rep_pass,
|
||||
rep_pass => $rep_pass,
|
||||
}
|
||||
|
||||
#Tie internal-vip to p_mysql
|
||||
cs_colocation { 'mysql_to_internal-vip':
|
||||
primitives => ['internal-vip','master_p_mysql:Master'],
|
||||
score => 'INFINITY',
|
||||
require => [Cs_resource['p_mysql'], Cs_commit['mysql']],
|
||||
}
|
||||
|
||||
}
|
||||
elsif ($custom_setup_class == 'galera') {
|
||||
Class['galera'] -> Class['mysql::server']
|
||||
|
@ -2,3 +2,4 @@ server-id=<%= server_id %>
|
||||
log-bin=mysql-bin
|
||||
relay-log=mysqld-relay-bin
|
||||
replicate-ignore-db=mysql
|
||||
slave-skip-errors=1007
|
||||
|
@ -66,7 +66,7 @@ else {
|
||||
}
|
||||
|
||||
# can be 'qpid' or 'rabbitmq' only
|
||||
$queue_provider = 'rabbitmq'
|
||||
$queue_provider = 'qpid'
|
||||
|
||||
# do not edit the below line
|
||||
validate_re($queue_provider, 'rabbitmq|qpid')
|
||||
|
13
deployment/puppet/qpid/files/qpid-route-setup.sh
Executable file
13
deployment/puppet/qpid/files/qpid-route-setup.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
for localaddr in $(cat /tmp/qpid-endpoints.txt); do
|
||||
for remoteaddr in $(cat /tmp/qpid-endpoints.txt) ; do
|
||||
if [ $localaddr != $remoteaddr ] ; then
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr amq.direct
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr amq.fanout
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr qmf.default.topic
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr qmf.default.direct
|
||||
fi
|
||||
done
|
||||
done
|
||||
exit 0
|
||||
|
@ -1,13 +1,14 @@
|
||||
#!/bin/bash
|
||||
TIMEOUT="--timeout 3"
|
||||
<% qpid_nodes.each do |nodea|
|
||||
qpid_nodes.each do |nodeb| -%>
|
||||
localaddr="<%= nodea %>"
|
||||
remoteaddr="<%= nodeb %>"
|
||||
if [[ "$localaddr" != "$remoteaddr" ]] ; then
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr amq.direct
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr amq.fanout
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr qmf.default.topic
|
||||
qpid-route -d dynamic add $localaddr $remoteaddr qmf.default.direct
|
||||
qpid-route $TIMEOUT -d dynamic add $localaddr $remoteaddr amq.direct
|
||||
qpid-route $TIMEOUT -d dynamic add $localaddr $remoteaddr amq.fanout
|
||||
qpid-route $TIMEOUT -d dynamic add $localaddr $remoteaddr qmf.default.topic
|
||||
qpid-route $TIMEOUT -d dynamic add $localaddr $remoteaddr qmf.default.direct
|
||||
fi
|
||||
<% end
|
||||
end -%>
|
||||
|
Loading…
Reference in New Issue
Block a user