rancher2.0安装mysql_高可用rancher集群搭建
我在使用rancher過程中遇到的問題:
一開始是用的單機的環境,沒有設置啟動內存,而且mysql使用的是內嵌的數據庫。Rancher Server在運行了幾個月后變的極慢,甚至不能再添加和啟動、刪除容器,一個操作會卡在那一直不動。
當時的啟動命令是
sudo docker run --name rancher-server -d --restart=unless-stopped -p 18180:8080 rancher/server
可以參看我之前寫的文章https://www.jianshu.com/p/1a80328ea0a5
問題調研
翻看了rancher社區和官方文檔發現:
很可能有一些任務由于某些原因而處于僵死狀態,如果你能夠用界面查看系統管理 -> 系統進程,你將可以看到Running中的內容,如果這些任務長時間運行(并且失敗),則Rancher會最終使用太多的內存來跟蹤任務。這使得Rancher Server處于了內存不足的狀態。
為了使服務器變為可響應狀態,你需要添加更多內存。通常4GB的內存就夠了。
你需要再次運行Rancher Server命令并且添加一個額外的選項-e JAVA_OPTS="-Xmx4096m",但是由于之前用的是內嵌的mysql,一旦重新運行一個容器,所有數據就會丟失,所以強烈建議使用外部mysql
$ docker run -d -p 8080:8080 --restart=unless-stopped -e JAVA_OPTS="-Xmx4096m" rancher/server
根據MySQL數據庫的設置方式的不同,你可能需要進行升級才能添加該選項。
如果是由于缺少內存而無法看到系統管理 -> 系統進程的話,那么在重啟Rancher Server之后,已經有了更多的內存。你現在應該可以看到這個頁面了,并可以開始對運行時間最長的進程進行故障分析。
解決方案
1. 使用外部的msyql數據庫
在你的外部數據庫中,只需要提前創建數據庫名和數據庫用戶。Rancher會自動創建Rancher所需要的數據庫表。
以下是創建數據庫和數據庫用戶的SQL命令例子
CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';
啟動一個Rancher連接一個外部數據庫,你需要在啟動容器的命令中添加額外參數。
sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server \
--db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle
大部分的輸入參數都有默認值并且是可選的,只有MySQL server的地址是必須輸入的。
--db-host IP or hostname of MySQL server
--db-port port of MySQL server (default: 3306)
--db-user username for MySQL login (default: cattle)
--db-pass password for MySQL login (default: cattle)
--db-name MySQL database name to use (default: cattle)
多節點的HA部署
HA部署需求
HA 節點:
所有安裝有支持的Docker版本的現代Linux發行版 RancherOS, Ubuntu, RHEL/CentOS 7 都是經過嚴格的測試。
對于 RHEL/CentOS, 默認的 storage driver, 例如 devicemapper using loopback, 并不被Docker推薦。 請參考Docker的文檔去修改使用其他的storage driver。
對于 RHEL/CentOS, 如果你想使用 SELinux, 你需要 安裝額外的 SELinux 組件.
9345, 8080 端口需要在各個節點之間能夠互相訪問
1GB內存
MySQL數據庫
至少 1 GB內存
每個Rancher Server節點需要50個連接 (例如:3個節點的Rancher則需要至少150個連接)
MYSQL配置要求
選項1: 用默認COMPACT選項運行Antelope
選項2: 運行MySQL 5.7,使用Barracuda。默認選項ROW_FORMAT需設置成Dynamic
外部負載均衡服務器
負載均衡服務器需要能訪問Rancher Server節點的 8080 端口
大規模部署建議
每一個Rancher Server節點需要有4 GB 或者8 GB的堆空間,意味著需要8 GB或者16 GB內存
MySQL數據庫需要有高性能磁盤
對于一個完整的HA,建議使用一個有副本的Mysql數據庫。另一種選擇則是使用Galera集群并強制寫入一個MySQL節點。
在每個需要加入Rancher Server HA集群的節點上,運行以下命令:
docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 -e JAVA_OPTS="-Xmx4096m" rancher/server \
--db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle \
--advertise-address
在每個節點上, 需要在每個節點上唯一,因為這個IP會被添加到HA的設置中。
如果你修改了 -p 8080:8080 并在host上暴露了一個不一樣的端口,你需要添加 --advertise-http-port 參數到命令中。
注意:
你可以使用 docker run rancher/server --help 獲得命令的幫助信息
配置一個外部的負載均衡器,這個負責均衡負責將例如80或443端口的流量,轉發到運行Rancher Server的節點的8080端口中。負載均衡器必須支持websockets 以及 forwarded-for 的Http請求頭以支持Rancher的功能。參考 使用SSL 這個配置的例子。
總結
以上是生活随笔為你收集整理的rancher2.0安装mysql_高可用rancher集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssm jsp跳转jsp_去掉Shiro
- 下一篇: mysql删除重复文章标题_MySQL中