2 Documentation Test suite to verify packet flows between vm instances.
3 Suite Setup OpenStackInstallUtils.Get All Ssh Connections
4 Suite Teardown Close All Connections
6 Library OperatingSystem
7 Library RequestsLibrary
8 Resource ../libraries/OpenStackInstallUtils.robot
9 Resource ../libraries/SystemUtils.robot
10 Resource ../libraries/Utils.robot
14 Run Keyword If 2 < ${NUM_CONTROL_NODES} Install MySQl Cluster ${OS_CONTROL_1_IP} ${OS_CONTROL_1_IP} openstack
15 Run Keyword If 2 < ${NUM_CONTROL_NODES} Install MySQl Cluster ${OS_CONTROL_2_IP} ${OS_CONTROL_2_IP} openstack
16 Run Keyword If 2 < ${NUM_CONTROL_NODES} Install MySQl Cluster ${OS_CONTROL_3_IP} ${OS_CONTROL_3_IP} openstack
17 Run Keyword If 3 < ${NUM_CONTROL_NODES} Install MySQl Cluster ${OS_CONTROL_4_IP} ${OS_CONTROL_4_IP} openstack
18 Run Keyword If 4 < ${NUM_CONTROL_NODES} Install MySQl Cluster ${OS_CONTROL_5_IP} ${OS_CONTROL_5_IP} openstack
19 Run Keyword If 2 < ${NUM_CONTROL_NODES} Configure Cluster Root Node ${OS_CONTROL_1_IP} ${OS_CONTROL_1_HOSTNAME} ${OS_USER}
20 Run Keyword If 2 < ${NUM_CONTROL_NODES} Enable MySQL non-root nodes ${OS_CONTROL_2_IP} ${OS_CONTROL_2_HOSTNAME} ${OS_USER}
21 Run Keyword If 2 < ${NUM_CONTROL_NODES} Enable MySQL non-root nodes ${OS_CONTROL_3_IP} ${OS_CONTROL_2_HOSTNAME} ${OS_USER}
22 Run Keyword If 3 < ${NUM_CONTROL_NODES} Enable MySQL non-root nodes ${OS_CONTROL_4_IP} ${OS_CONTROL_4_HOSTNAME} ${OS_USER}
23 Run Keyword If 4 < ${NUM_CONTROL_NODES} Enable MySQL non-root nodes ${OS_CONTROL_5_IP} ${OS_CONTROL_5_HOSTNAME} ${OS_USER}
24 Run Keyword If 2 < ${NUM_CONTROL_NODES} Add HAPROXY Entry for DB ${HAPROXY_IP} ${HAPROXY_IP}
25 Run Keyword If 2 > ${NUM_CONTROL_NODES} Install MySql ${OS_CONTROL_1_IP}
26 Run Keyword If 2 > ${NUM_CONTROL_NODES} Enable MySql ${OS_CONTROL_1_IP} ${OS_CONTROL_1_HOSTNAME} ${OS_USER}
30 [Arguments] ${os_node_cxn}
31 Run Keyword If '${OS_APPS_PRE_INSTALLED}' == 'no' Install Rpm Package ${os_node_cxn} mariadb mariadb-server python2-PyMySQL
32 Touch File ${os_node_cxn} /etc/my.cnf.d/openstack.cnf
33 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld bind-address 0.0.0.0
34 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld default-storage-engine innodb
35 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld innodb_file_per_table innodb
36 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld max_connections 4096
37 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld collation-server utf8_general_ci
38 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld character-set-server utf8
41 [Arguments] ${os_node_cxn} ${hostname} ${hostuser}
42 Enable Service ${os_node_cxn} mariadb.service
43 Start Service ${os_node_cxn} mariadb.service
44 Create User Pass For Mysql ${os_node_cxn} root mysql
45 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostname} ${hostuser}
47 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* localhost ${hostuser}
51 [Arguments] ${os_node_cxn} ${bindaddress} ${galera_cluster_name}
52 Run Keyword If '${OS_APPS_PRE_INSTALLED}' == 'no' Install Rpm Package ${os_node_cxn} mariadb galera mariadb-galera-server python2-PyMySQL mariadb-libs
53 Touch File ${os_node_cxn} /etc/my.cnf.d/openstack.cnf
54 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld bind-address 0.0.0.0
55 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld datadir /var/lib/mysql
56 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld socket /var/lib/mysql/mysql.sock
57 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld user mysql
58 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld binlog_format ROW
59 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld default_storage_engine innodb
60 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld innodb_autoinc_lock_mode 2
61 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld innodb_flush_log_at_trx_commit 0
62 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld innodb_buffer_pool_size 122M
63 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld wsrep_provider /usr/lib64/galera/libgalera_smm.so
64 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld wsrep_provider_options "pc.recovery=TRUE;gcache.size=300M"
65 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld wsrep_cluster_name ${galera_cluster_name}
66 Run Keyword If 4 < ${NUM_CONTROL_NODES} Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld wsrep_cluster_address
67 ... gcomm://${OS_CONTROL_1_IP},${OS_CONTROL_2_IP},${OS_CONTROL_3_IP},${OS_CONTROL_4_IP},${OS_CONTROL_5_IP}
68 Run Keyword If 4 > ${NUM_CONTROL_NODES} Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld wsrep_cluster_address
69 ... gcomm://${OS_CONTROL_1_IP},${OS_CONTROL_2_IP},${OS_CONTROL_3_IP}
70 Crudini Edit ${os_node_cxn} /etc/my.cnf.d/openstack.cnf mysqld wsrep_sst_method rsync
71 Crudini Delete ${os_node_cxn} /etc/my.cnf.d/auth_gssapi.cnf mariadb plugin-load-add
72 #Configure Mysql Cluster Check ${os_node_cxn}
74 Configure Cluster Root Node
75 [Arguments] ${os_node_cxn} ${hostname} ${hostuser}
76 Enable Service ${os_node_cxn} mariadb.service
77 Run Command ${os_node_cxn} sudo galera_new_cluster
78 Create User Pass For Mysql ${os_node_cxn} root mysql
79 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostuser} ${hostname}
81 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostuser} localhost
83 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostuser} ${HAPROXY_HOSTNAME}
84 ... mysql #Grant Process To Mysql Database ${os_node_cxn} root mysql *.*
85 ... # clustercheck_user localhost # my_clustercheck_password
86 Execute MySQL STATUS Query ${os_node_cxn} root mysql wsrep_cluster_size
88 Enable MySQL non-root nodes
89 [Arguments] ${os_node_cxn} ${hostname} ${hostuser}
90 Enable Service ${os_node_cxn} mariadb.service
91 Start Service ${os_node_cxn} mariadb.service
92 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostuser} ${hostname}
94 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostuser} localhost
96 Grant Privileges To Mysql Database ${os_node_cxn} root mysql *.* ${hostuser} ${HAPROXY_HOSTNAME}
97 ... mysql #Grant Process To Mysql Database ${os_node_cxn} root mysql *.*
98 ... # clustercheck_user localhost # my_clustercheck_password
99 Execute MySQL STATUS Query ${os_node_cxn} root mysql wsrep_cluster_size
101 Add HAPROXY Entry for DB
102 [Arguments] ${os_node_cxn} ${bind_ip}
103 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg $'\n'listen hadatabase
104 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " bind ${bind_ip}:3306"
105 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " timeout client 90s"
106 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " mode tcp"
107 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " option mysql-check user root"
108 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " balance roundrobin"
109 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " timeout server 90s"
110 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " server galera1 ${OS_CONTROL_1_IP}:3306"
111 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " server galera2 ${OS_CONTROL_2_IP}:3306"
112 Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " server galera3 ${OS_CONTROL_3_IP}:3306"
113 Run Keyword If 3 < ${NUM_CONTROL_NODES} Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " server galera4 ${OS_CONTROL_4_IP}:3306"
114 Run Keyword If 4 < ${NUM_CONTROL_NODES} Append To File ${os_node_cxn} /etc/haproxy/haproxy.cfg " server galera4 ${OS_CONTROL_5_IP}:3306"
115 Enable Service ${os_node_cxn} haproxy
116 Restart Service ${os_node_cxn} haproxy
118 Configure Mysql Cluster Check
119 [Arguments] ${os_node_cxn}
120 Touch File ${os_node_cxn} /etc/sysconfig/clustercheck
121 Append To File ${os_node_cxn} /etc/sysconfig/clustercheck MYSQL_USERNAME=clustercheck_user
122 Append To File ${os_node_cxn} /etc/sysconfig/clustercheck MYSQL_PASSWORD=my_clustercheck_password
123 Append To File ${os_node_cxn} /etc/sysconfig/clustercheck MYSQL_HOST=localhost
124 Append To File ${os_node_cxn} /etc/sysconfig/clustercheck MYSQL_PORT=3306
125 Run Keyword If '${OS_APPS_PRE_INSTALLED}' == 'no' Install Rpm Package ${os_node_cxn} xinetd
126 Touch File ${os_node_cxn} /etc/xinetd.d/galera-monitor
127 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor service galera-monitor
128 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor "{"
129 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " port = 9200"
130 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " disable = no"
131 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " socket_type = stream"
132 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " protocol = tcp"
133 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " wait = no"
134 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " user= root"
135 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " group = root"
136 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " groups = yes"
137 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " server = /usr/bin/clustercheck"
138 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " type = UNLISTED"
139 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " per_source = UNLISTED"
140 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " log_on_failure = HOST"
141 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor " flags = REUSE"
142 Append To File ${os_node_cxn} /etc/xinetd.d/galera-monitor "}"
143 Daemon Reload ${os_node_cxn}
144 Enable Service ${os_node_cxn} xinetd
145 Start Service ${os_node_cxn} xinetd