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   // 数据库名称

安装成功后点击端口进入页面

输入  用户名与密码(自己设置),进行安装

 

 

发布了83 篇原创文章 · 获赞 188 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_40791253/article/details/101533775