Rancher-server的HA部署(V1.6版本)

目錄

一、環境準備

二、安裝Docker

三、安裝數據庫  Mariadb  服務

1. 安裝 Mariadb

2. 創建 cattle 數據庫並賦權

四、啓動Rancher-server服務

1. 配置Master節點

2. 配置Node1節點

五、配置HA管理

六、添加主機

七、嘗試添加應用


一、環境準備

1. 兩臺VMware Centos7 虛擬機

Master節點

  • 運行內存2G
  • 處理器2核
  • 能夠ping通互聯網
  • 內網ip:192.168.100.10 ;外網ip:192.168.200.10(外網必須有)

Node1節點

  • 運行內存1G
  • 處理器1核
  • 能夠ping通互聯網
  • 內網ip:192.168.100.20 ;外網ip:192.168.200.20(外網必須有)

準確來說應該準備三臺虛擬機,但由於資源緊張,我這裏使用兩臺虛擬機做演視,操作步驟其實都相差不大。

Master負責 倉庫節點與server節點

Node1負責 Client節點

節點角色

主機名

功能

Server節點

主要作爲系統的運行指令的發送節點

master

       Rancher-server、haproxy、

                  數據庫服務

Client節點

主要爲服務運行的節點,可以使用一個或者多個均可

node1

Server服務、代理

Registry節點

(主要作爲系統所有的運行的鏡像倉庫節點)

node2

倉庫

本次實驗環境採用server+client兩個節點部署,client節點可以根據需求自主擴展。 倉庫可以使用上節部署在 Master 節點的Harbor私有倉庫。

二、安裝Docker

Master節點 + Node1節點均要設置,不能遺漏

嘿嘿我就不做詳細描述了喲各位,不懂請點擊  Centos 7指定版本安裝Docker

https://blog.csdn.net/qq_40791253/article/details/84251998

三、安裝數據庫  Mariadb  服務

1. 安裝 Mariadb

//下載mariadb
# yum install -y mariadb  mariadb-server

//啓動並設置開機自啓mariadb服務
# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.# systemctl restart mariadb
# systemctl start mariadb 

//初始化設置
# mysql_secure_installation
Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

2. 創建 cattle 數據庫並賦權

# mysql -uroot -p123456
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

四、啓動Rancher-server服務

1. 配置Master節點

# Launch on each node in your HA cluster
$ docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server \
     --db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle \
     --advertise-address <IP_of_the_Node>

參數解讀:

-p 端口映射    --db-host 主機IP

--db-port 3306   --db-user 數據庫用戶名

--db-pass 數據庫密碼   --db-name 數據庫名
--advertise-address 本機IP

Master節點
# docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server --db-host 192.168.200.10 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-address 192.168.200.10
f9809ad2bf590826733d51f22160a00405fc5afaf3cb72184aa4a932c639674e 

推薦使用Chrome瀏覽器 輸入 IP地址:8080端口號訪問Rancher頁面

 

 你可以將Rancher/server鏡像上傳至上節所搭建的Harbor平臺

此舉是爲了方便Node1節點下載Rancher/server鏡像        (此操作可選)

//登錄Harbor平臺
# docker login 192.168.200.10
Username: admin
Password:                   //默認密碼爲  Harbor12345,此時輸入密碼是看不見得
Login Succeeded

//爲rancher-server鏡像打上標籤
# docker tag rancher/server:latest 192.168.200.10/library/rancher/server:v1

//上傳鏡像至Harbor平臺
# docker push 192.168.200.10/library/rancher/server:v1

2. 配置Node1節點

2.1 修改 docker 基本配置

修改 daemon.json 文件 添加 Docker倉庫地址 "insecure-registries": [ "192.168.200.10"]

//修改 daemon.json 文件 添加 Docker倉庫地址 "insecure-registries": [ "192.168.200.10"] 
# vi /etc/docker/daemon.json

# cat /etc/docker/daemon.json 
{
   "registry-mirrors": ["https://tc3xfheh.mirror.aliyuncs.com"],
   "insecure-registries": [ "192.168.200.10"]
}

//生效配置,重啓docker
# systemctl daemon-reload
# systemctl restart docker
# systemctl enable docker

2.2 啓動Rancher

//登錄Harbor平臺
# docker login 192.168.200.10
Username: admin
Password: 
Login Succeeded

//拉取rancher-server鏡像
# docker pull 192.168.200.10/library/rancher/server:v1

//啓動Rancher-server
# docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 192.168.200.10/library/rancher/server:v1 --db-host 192.168.200.10 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-address 192.168.200.20
3c8df6860cc97b61dd2538eb6022a07c0c2da4eb3ce4a510f631e4284d66d10d

--db-host 192.168.200.10 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle

這裏填寫Master節點所安裝的數據庫信息

容器運行後在瀏覽器輸入 IP地址:8080端口 訪問Rancher服務

點擊ADMIN-High Availability,查看高可用主機

五、配置HA管理

Master、Node1節點

haproxy服務最好安裝在單獨節點,這裏資源緊張,所以我們就直接部署在Master節點上。

1. 安裝haproxy服務

# yum install -y haproxy

2. 重寫haproxy.cfg文件

//備份 haproxy.cfg 文件
# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

# vi /etc/haproxy/haproxy.cfg
global
  maxconn  4096
  ssl-server-verify  none

defaults
  mode  http
  balance  roundrobin
  option  redispatch
  option  forwardfor

 timeout  connect  5s
  timeout  queue  5s
  timeout  client  36000s
  timeout  server  36000s

frontend  http-in
  mode  tcp
  #bind *:443 ssl crt /etc/haproxy/certificate.pem
  bind  *:8099  //監聽的端口
  default_backend rancher_servers

 acl  is_websocket  hdr(Upgrade)  -i  WebSocket
  acl  is_websocket  hdr_beg(Host)  -i  ws
  use_backend rancher_servers  if  is_websocket

backend  rancher_servers
  server  websrv1  192.168.200.10:8080  weight 1 maxconn 1024 //Rancher server IP:Port
  server  websrv2  192.168.200.20:8080  weight 1 maxconn 1024 //Rancher server IP:Port

3. 啓動haporxy服務管理

# haproxy -f /etc/haproxy/haproxy.cfg &

可能會彈出 # [WARNING] 092/172303 (13502) : config : 'option forwardfor' ignored for frontend 'http-in' as it requires HTTP mode.

直接回車就OK了

4. 測試高可用性

首先停止Master節點的Rancher-server容器,然後訪問Node1:8099

# docker stop f9

# docker start f9 (啓動Master節點剛剛停止的Rancher服務)

六、添加Node1主機

Node1節點

# sudo docker run -e CATTLE_AGENT_IP="192.168.200.20"  --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.200.10:8080/v1/scripts/A6FD0916521AEE275F42:1546214400000:cAAoLEt0Z2fPErLv8R5chM5aJ6U

運行結果:
INFO: Running Agent Registration Process, CATTLE_URL=http://192.168.200.10:8080/v1
INFO: Attempting to connect to: http://192.168.200.10:8080/v1
INFO: http://192.168.200.10:8080/v1 is accessible
INFO: Configured Host Registration URL info: CATTLE_URL=http://192.168.200.10:8080/v1 ENV_URL=http://192.168.200.10:8080/v1
INFO: Inspecting host capabilities
INFO: Boot2Docker: false
INFO: Host writable: true
INFO: Token: xxxxxxxx
INFO: Running registration
INFO: Printing Environment
INFO: ENV: CATTLE_ACCESS_KEY=AFAEF916AB6595AE0DC6
INFO: ENV: CATTLE_AGENT_IP=192.168.200.20
INFO: ENV: CATTLE_HOME=/var/lib/cattle
INFO: ENV: CATTLE_REGISTRATION_ACCESS_KEY=registrationToken
INFO: ENV: CATTLE_REGISTRATION_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_URL=http://192.168.200.10:8080/v1
INFO: ENV: DETECTED_CATTLE_AGENT_IP=192.168.200.20
INFO: ENV: RANCHER_AGENT_IMAGE=rancher/agent:v1.2.11
INFO: Launched Rancher Agent: d533059605b9ce06e09db5da8c0ed628b631b1a37778136afa2153541a43ea7f

點擊  關閉  後,過一會兒便能看見自己所添加的 主機

七、嘗試添加owncloud應用

這裏我們利用 docker-compose 搭建一個 owncloud 私有云盤

owncloud 的 docker-compose 代碼

version: '2'
services:
  owncloud:
    image: owncloud:9
    restart: unless-stopped
    links: 
      - mysql:mysql
    volumes:
      - "/data/db/owncloud:/var/www/html/data"
    ports:
      - 5679:80
  mysql:
    image: mysql:5.7
    restart: unless-stopped
    volumes:
      - "/data/db/mysql:/var/lib/mysql"
    ports:
      - 13306:3306
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_DATABASE: ownCloud

參數解釋

owncloud:
  image: owncloud:9
  restart: unless-stopped   // 除非停止,不然一直重啓
  links:
    - mysql:mysql
  volumes:
    - "/data/db/owncloud:/var/www/html/data"   // 宿主機目錄:容器目錄
  ports:
    - 5679:80    // 宿主機端口:80
mysql:
  image: mysql:5.7
  restart: unless-stopped   // 除非停止,不然一直重啓
  volumes:
    - "/data/db/mysql:/var/lib/mysql"   // 宿主機目錄:容器目錄
  ports:
    - 13306:3306    // 宿主機端口:3306
  environment:
    MYSQL_ROOT_PASSWORD: "123456"   // 數據庫密碼
    MYSQL_DATABASE: owncloud   // 數據庫名稱

安裝成功後點擊端口進入頁面

輸入  用戶名與密碼(自己設置),進行安裝

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章