環境 OpenStack HA 3 controllers
我的keystone服務是關閉的。由httpd來接管keystone服務
[root@controller1 ~]# systemctl stop openstack-keystone
[root@controller1 ~]# systemctl start httpd
但是我的keystone連不上數據庫了。打開log
vi /var/log/httpd/keystone_wsgi_admin_error.log
keystone.common.wsgi OperationalError: (pymysql.err.OperationalError) (1040, u'Too many connections')
數據庫連接數太多了。但是我的數據庫的連接數設置是1024。我把值改爲-1。重啓mariadb。仍然連不上數據庫。
由於使用HAProxy。controller2上的數據庫服務關閉了。虛擬IP飄到了controller2上。導致集羣連不上數據庫
DEBUG方法
首先看虛擬IP在哪個controller上。在那個controller上檢查服務用沒有起來
[root@controller1 ~]# netstat -plunt | grep 3305
tcp 0 0 192.168.56.200:3305 0.0.0.0:* LISTEN 17977/haproxy
[root@controller1 ~]# netstat -plunt | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 14862/mysqld
我的haproxy配置文件如下
listen galera-cluster
bind controller:3305
balance source
server controller1 controller1:3306 check port 4567 inter 2000 rise 2 fall 5
server controller2 controller2:3306 check port 4567 inter 2000 rise 2 fall 5 backup
通過vip測試keystone數據庫連接
mysql -ukeystone_admin -pf15c18d2db7a4804 -h controller -P 3305
通過真實IP測試keystone數據庫連接
mysql -ukeystone_admin -pf15c18d2db7a4804 -h controller1 -P 3306
最後讓虛擬IP飄到controller1上,或者啓動controller2的數據庫服務就可以了。