added HA queues
This commit is contained in:
@@ -14,6 +14,7 @@ COOKIE_PATH = '/var/lib/rabbitmq/.erlang.cookie'
|
||||
ENV_CONF = '/etc/rabbitmq/rabbitmq-env.conf'
|
||||
RABBITMQ_CONF = '/etc/rabbitmq/rabbitmq.config'
|
||||
|
||||
|
||||
def vhost_exists(vhost):
|
||||
cmd = [RABBITMQ_CTL, 'list_vhosts']
|
||||
out = subprocess.check_output(cmd)
|
||||
@@ -88,6 +89,9 @@ def cluster_with(host):
|
||||
vers = rabbit_version()
|
||||
if vers >= '3.0.1-1':
|
||||
cluster_cmd = 'join_cluster'
|
||||
cmd = [RABBITMQ_CTL, 'set_policy HA \'^(?!amq\.).*\' '
|
||||
'\'{"ha-mode": "all"}\'']
|
||||
subprocess.check_call(cmd)
|
||||
else:
|
||||
cluster_cmd = 'cluster'
|
||||
out = subprocess.check_output([RABBITMQ_CTL, 'cluster_status'])
|
||||
@@ -122,7 +126,7 @@ def set_node_name(name):
|
||||
out.append(line)
|
||||
if not f:
|
||||
out.append('RABBITMQ_NODENAME=%s\n' % name)
|
||||
utils.juju_log('INFO', 'Updating %s, RABBITMQ_NODENAME=%s' %\
|
||||
utils.juju_log('INFO', 'Updating %s, RABBITMQ_NODENAME=%s' %
|
||||
(ENV_CONF, name))
|
||||
with open(ENV_CONF, 'wb') as conf:
|
||||
conf.write(''.join(out))
|
||||
@@ -142,7 +146,8 @@ def get_node_name():
|
||||
def _manage_plugin(plugin, action):
|
||||
os.environ['HOME'] = '/root'
|
||||
_rabbitmq_plugins = \
|
||||
glob.glob('/usr/lib/rabbitmq/lib/rabbitmq_server-*/sbin/rabbitmq-plugins')[0]
|
||||
glob.glob('/usr/lib/rabbitmq/lib/rabbitmq_server-*'
|
||||
'/sbin/rabbitmq-plugins')[0]
|
||||
subprocess.check_call([_rabbitmq_plugins, action, plugin])
|
||||
|
||||
|
||||
@@ -172,5 +177,4 @@ def enable_ssl(ssl_key, ssl_cert, ssl_port):
|
||||
rmq_conf.write(utils.render_template(os.path.basename(RABBITMQ_CONF),
|
||||
{"ssl_port": ssl_port,
|
||||
"ssl_cert_file": ssl_cert_file,
|
||||
"ssl_key_file": ssl_key_file})
|
||||
)
|
||||
"ssl_key_file": ssl_key_file}))
|
||||
|
||||
@@ -74,7 +74,7 @@ def amqp_changed(relation_id=None, remote_unit=None):
|
||||
def cluster_joined():
|
||||
if utils.is_relation_made('ha'):
|
||||
utils.juju_log('INFO',
|
||||
'hacluster relation is present, skipping native '\
|
||||
'hacluster relation is present, skipping native '
|
||||
'rabbitmq cluster config.')
|
||||
return
|
||||
l_unit_no = os.getenv('JUJU_UNIT_NAME').split('/')[1]
|
||||
@@ -84,7 +84,7 @@ def cluster_joined():
|
||||
return
|
||||
rabbit.COOKIE_PATH = '/var/lib/rabbitmq/.erlang.cookie'
|
||||
if not os.path.isfile(rabbit.COOKIE_PATH):
|
||||
utils.juju_log('ERROR', 'erlang cookie missing from %s' %\
|
||||
utils.juju_log('ERROR', 'erlang cookie missing from %s' %
|
||||
rabbit.COOKIE_PATH)
|
||||
cookie = open(rabbit.COOKIE_PATH, 'r').read().strip()
|
||||
local_hostname = subprocess.check_output(['hostname']).strip()
|
||||
@@ -94,7 +94,7 @@ def cluster_joined():
|
||||
def cluster_changed():
|
||||
if utils.is_relation_made('ha'):
|
||||
utils.juju_log('INFO',
|
||||
'hacluster relation is present, skipping native '\
|
||||
'hacluster relation is present, skipping native '
|
||||
'rabbitmq cluster config.')
|
||||
return
|
||||
l_unit_no = os.getenv('JUJU_UNIT_NAME').split('/')[1]
|
||||
@@ -132,7 +132,7 @@ def ha_joined():
|
||||
|
||||
if None in [corosync_bindiface, corosync_mcastport, vip, vip_iface,
|
||||
vip_cidr, rbd_name]:
|
||||
utils.juju_log('ERROR', 'Insufficient configuration data to '\
|
||||
utils.juju_log('ERROR', 'Insufficient configuration data to '
|
||||
'configure hacluster.')
|
||||
sys.exit(1)
|
||||
|
||||
@@ -162,19 +162,20 @@ def ha_joined():
|
||||
|
||||
relation_settings['resource_params'] = {
|
||||
'res_rabbitmq_rbd': 'params name="%s" pool="%s" user="%s" '
|
||||
'secret="%s"' % \
|
||||
'secret="%s"' %
|
||||
(rbd_name, POOL_NAME,
|
||||
SERVICE_NAME, ceph.keyfile_path(SERVICE_NAME)),
|
||||
'res_rabbitmq_fs': 'params device="/dev/rbd/%s/%s" directory="%s" '\
|
||||
'fstype="ext4" op start start-delay="10s"' %\
|
||||
'res_rabbitmq_fs': 'params device="/dev/rbd/%s/%s" directory="%s" '
|
||||
'fstype="ext4" op start start-delay="10s"' %
|
||||
(POOL_NAME, rbd_name, RABBIT_DIR),
|
||||
'res_rabbitmq_vip': 'params ip="%s" cidr_netmask="%s" nic="%s"' %\
|
||||
'res_rabbitmq_vip': 'params ip="%s" cidr_netmask="%s" nic="%s"' %
|
||||
(vip, vip_cidr, vip_iface),
|
||||
'res_rabbitmq-server': 'op start start-delay="5s" op monitor interval="5s"',
|
||||
'res_rabbitmq-server': 'op start start-delay="5s" '
|
||||
'op monitor interval="5s"',
|
||||
}
|
||||
|
||||
relation_settings['groups'] = {
|
||||
'grp_rabbitmq': 'res_rabbitmq_rbd res_rabbitmq_fs res_rabbitmq_vip '\
|
||||
'grp_rabbitmq': 'res_rabbitmq_rbd res_rabbitmq_fs res_rabbitmq_vip '
|
||||
'res_rabbitmq-server',
|
||||
}
|
||||
|
||||
@@ -193,7 +194,7 @@ def ha_changed():
|
||||
return
|
||||
vip = utils.config_get('vip')
|
||||
utils.juju_log('INFO', 'ha_changed(): We are now HA clustered. '
|
||||
'Advertising our VIP (%s) to all AMQP clients.' %\
|
||||
'Advertising our VIP (%s) to all AMQP clients.' %
|
||||
vip)
|
||||
# need to re-authenticate all clients since node-name changed.
|
||||
for rid in utils.relation_ids('amqp'):
|
||||
@@ -246,7 +247,8 @@ def ceph_changed():
|
||||
|
||||
def update_nrpe_checks():
|
||||
if os.path.isdir(NAGIOS_PLUGINS):
|
||||
rsync(os.path.join(os.getenv('CHARM_DIR'), 'scripts', 'check_rabbitmq.py'),
|
||||
rsync(os.path.join(os.getenv('CHARM_DIR'), 'scripts',
|
||||
'check_rabbitmq.py'),
|
||||
os.path.join(NAGIOS_PLUGINS, 'check_rabbitmq.py'))
|
||||
user = 'naigos'
|
||||
vhost = 'nagios'
|
||||
@@ -289,15 +291,16 @@ def upgrade_charm():
|
||||
|
||||
MAN_PLUGIN = 'rabbitmq_management'
|
||||
|
||||
|
||||
def config_changed():
|
||||
if utils.config_get('management_plugin') == True:
|
||||
if utils.config_get('management_plugin') is True:
|
||||
rabbit.enable_plugin(MAN_PLUGIN)
|
||||
utils.open_port(55672)
|
||||
else:
|
||||
rabbit.disable_plugin(MAN_PLUGIN)
|
||||
utils.close_port(55672)
|
||||
|
||||
if utils.config_get('ssl_enabled') == True:
|
||||
if utils.config_get('ssl_enabled') is True:
|
||||
ssl_key = utils.config_get('ssl_key')
|
||||
ssl_cert = utils.config_get('ssl_cert')
|
||||
ssl_port = utils.config_get('ssl_port')
|
||||
|
||||
Reference in New Issue
Block a user