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