PAAS平台即服务docker部署,并部署Elasticsearch 2.x和Gogs以及Prometheus部署

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28513801/article/details/90317724

首先本篇博客搭建的是先电的paas服务,即我们的docker容器

那么首先简单介绍一下本次环境
CentOS-7-x86_64-DVD-1511.iso 即我们linux操作系统的所用镜像文件

XianDian-PaaS-v2.2.iso 这个是先电的镜像

安装运行环境系统要求为Centos7, 内核版本不低于3.10
Docker版本不低于1.12.6
Rancher-Server版本1.6.5

虚拟机使用的平台环境是Virtual Box虚拟机管理器
用的网络模式为仅主机模式

在这里插入图片描述

网卡和网络类型这里可以参考博客
https://blog.csdn.net/qq_28513801/article/details/90138491

在这里插入图片描述

1.1.1
docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:
1)dockerClient客户端
2)Docker Daemon守护进程
3)Docker Image镜像
4)DockerContainer容器

Docker引擎Docker Engine是C/S架构,主要有以下部件组成:
服务器(Docker daemon):后台运行的Docker daemon进程。Daemon进程用于管理Docker对象,包括镜像(images)、容器(containers)、网络(networks)、数据卷(data volumes)。

REST接口:同daemon交互的REST API接口。
客户端(Docker client):命令行(CLI)交互客户端。客户端使用REST API接口同Docker daemon进行访问。Docker服务的架构图如图1-1所示。

在这里插入图片描述
图1-1

1.1.2、Docker平台组成

在这里插入图片描述
图1-2

运行一个Docker服务,组成包括Docker daemon服务器、Docker Client客户端、Docker Image镜像、Docker Registry库、Docker Contrainer容器,如图1-2所示。

(1)Docker镜像:


是一个只读模板,用于创建Docker容器,由Dockerfile文本描述镜像的内容。镜像定义类似“面对对象的类”,从一个基础镜像(Base Image)开始。构建一个镜像实际就是安装、配置和运行的过程,Docker镜像基于UnionFS把以上过程进行分层(Layer)存储,这样更新镜像可以只更新变化的层。Docker的描述文件为Dockerfile,Dockerfile是一个文本文件,基本指令包括:
FROM:定义基础镜像。
MAINTAINER :作者或维护者。
RUN:运行linux 命令。
ADD:增加文件或目录。
EVN:定义环境变量。
CMD:运行进程。

(2)Docker容器:

是一个镜像的运行实例。容器有镜像创建,运行过程例如:
运行ubuntu操作系统镜像,-I 前台交互模型,运行命令为/bin/bash
$ docker run -i -t ubuntu /bin/bash
拉(pull)镜像,Docker Engine 检查ubuntu  镜像是否存在,如果本地已经存在,使用该镜像创建容器,如果不存在,Docker Engine从镜像库拉镜像。
使用该镜像创建新容器。
分配文件系统,挂载一个读写层,在读写从加载镜像。
分配网络/网桥接口,创建一个网络接口,让容器和主机通信。
从可用的IP池选择IP地址,分配给容器。
执行命令/bin/bash。
捕获和提供执行结果。

(3)Docker 仓库:

Docker仓库是Docker镜像库。Docker Registry也是一个容器。
Docker Hub是Docker公司提供的互联网公共镜像仓库。
可以构建自己本地的镜像仓库,国内有些公司也构建了镜像仓库。
包括阿里云、新浪等。Docker 集群服务:Docker集群服务运行承租的Docker节点一起工作。
目前支持swarm模式。
一个 Docker Registry 节点中可以包含多个仓库(Repository);
每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
一般而言,一个仓库包含的是同一个软件的不同版本的镜像,而标签则用于对应于软件的的不同版本。
可以通过 <仓库名>:<标签> 的格式来指定具体是哪个版本的镜像。
如果不给出标签,将以 latest 作为默认标签。
以 Ubuntu 镜像 为例,ubuntu 是仓库的名字,其内包含有不同的版本标签,如,14.04, 16.04。
可以通过 ubuntu:14.04,或者 ubuntu:16.04 来具体指定所需哪个版本的镜像。如果忽略了标签,比如ubuntu,那将视为 ubuntu:latest。

1.2.2、网络说明

安装PaaS的VM的网络IP采用IaaS的外部IP,IP设置成静态IP。网络架构如下:

在这里插入图片描述

如上图所示,这是我们的网络架构
设备名:

  1. Server节点

主要作为系统的运行指令的发送节点
server:10.0.3.137

  1. Client节点

主要为服务运行的节点,可以使用一个或者多个均可
client:10.0.3.138

  1. Registry节点

主要作为系统所有的运行的镜像仓库节点
registry:10.0.3.137

1.2.3、基础环境配置

本次实验环境采用server+client两个节点部署,client节点可以根据需求自主扩展。下面的基础环境1-4步骤在两个节点均要设置,不能遗漏。
1.关闭selinux
# vi /etc/sysconfig/selinux
SELINUX=disabled
# getenforce
Disabled
2.关闭防火墙
# systemctl stop firewalld.service
3.删除iptables防火墙规则
# iptables –F
# iptables –X
# iptables –Z
# /usr/sbin/iptables-save
4.修改系统内核
打开内核转发功能。
编辑配置文件/etc/sysctl.conf,将以下内容添加:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
修改完成后使用命令生效。
# sysctl –p
5.修改主机名、配置域名解析
server节点:
#hostnamectl set-hostname server
#bash
# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.3.137 server
10.0.3.138 client
# ping client
PING client (10.0.3.138) 56(84) bytes of data.
64 bytes from client (10.0.3.138): icmp_seq=1 ttl=64 time=1.02 ms
64 bytes from client (10.0.3.138): icmp_seq=2 ttl=64 time=0.400 ms
client节点:
# hostnamectl set-hostname client
# bash
# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.3.137 server
10.0.3.138 client
# ping server
PING server (10.0.3.137) 56(84) bytes of data.
64 bytes from server (10.0.3.137): icmp_seq=1 ttl=64 time=0.531 ms
64 bytes from server (10.0.3.137): icmp_seq=2 ttl=64 time=0.327 ms
6.配置yum源
将我们的XianDian-PaaS-v2.2.iso通过CRT上传到系统中,然后挂载到/mnt,拷贝出mnt里面所有的文件夹到/opt上。
# mount -o loop XianDian-PaaS-v2.2.iso /mnt
# cp -rvf * /opt
# mv /etc/yum.repos.d/* /media/
# vi /etc/yum.repos.d/docker.repo 
[docker]
name=docker
baseurl=file:///opt/docker   //这个源是指向我们的docker的本地yum源,当然如果可以的话,最好是在IAAS层新建两个虚拟机,然后使用FTP服务进行获取YUM源
gpgcheck=0
enabled=1
7.安装vsftpd服务
# yum install -y vsftpd
# vi /etc/vsftpd/vsftpd.conf 
anon_root=/opt //添加这行,设置共享目录。
# systemctl restart vsftpd 
# systemctl enable vsftpd

# yum clean all
# yum list 
能看到列表即表示yum源配置成功
Client节点yum源配置同Server节点一样。
# vi /etc/yum.repos.d/docker.repo 
[docker]
name=docker
baseurl=ftp://10.0.3.137/docker 
gpgcheck=0

2.1、安装Docker服务
所有节点安装docker环境


# yum install -y docker
# systemctl restart docker
# systemctl enable docker

2.2、部署Docker 仓库

2.2.1、上传仓库部署使用的镜像。

# ll
-rw-r--r-- 1 root root   33918976 Oct 17 10:20 registry_latest.tar
# docker load -i registry_latest.tar
# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry   latest              c9bd19d022f6        15 months ago       33.27 MB

2.2.2、启动仓库容器服务

# docker run -d -p 5000:5000 --restart=always --name registry docker.io/registry:latest
20a07207bf28256d13fbc53cf2a1d978a4827bf8f360b32a8106d996f024c001
# docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
20a07207bf28        docker.io/registry:latest   "/entrypoint.sh /etc/"   8 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp   registry

2.2.3、设置仓库地址

# vi /etc/sysconfig/docker //添加下面两行
ADD_REGISTRY='--add-registry 10.0.3.137:5000'
INSECURE_REGISTRY='--insecure-registry 10.0.3.137:5000'
# systemctl daemon-reload
# systemctl restart docker
# docker info 
注意:两个节点都要添加仓库地址。
# docker images
# docker tag c9bd19d022f6 10.0.3.137:5000/registry:latest
# docker push 10.0.3.137:5000/registry:latest
至此仓库就建立好了,我们需要将所有镜像全部推送到仓库中,提供给其他节点使用。


下面演示下我们的所有镜像全部都推送过去后的页面

[root@server ~]# docker images
REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZE
10.0.3.137:5000/rancher/server                              v1.6.5              f89070da7581        11 months ago       984.9 MB
10.0.3.137:5000/tomcat                                      latest              a92c139758db        12 months ago       557.4 MB
10.0.3.137:5000/centos                                      latest              ff426288ea90        12 months ago       207.2 MB
10.0.3.137:5000/nginx                                       latest              3f8a4339aadd        13 months ago       108.5 MB
10.0.3.137:5000/mysql                                       8.0                 26bd364f80bf        13 months ago       342.5 MB
10.0.3.137:5000/google/cadvisor                             latest              75f88e3ec333        13 months ago       62.18 MB
10.0.3.137:5000/prom/node-exporter                          latest              ff5ecdcfc4a2        13 months ago       22.8 MB
10.0.3.137:5000/gogs/gogs                                   0.11.34             290bc4df94f2        14 months ago       139.1 MB
10.0.3.137:5000/gogs/gogs                                   latest              6ab1773c26bc        14 months ago       138.7 MB
10.0.3.137:5000/rancher/lb-service-haproxy                  v0.7.9              774f6505bd28        17 months ago       311.8 MB
10.0.3.137:5000/rancher/scheduler                           v0.8.2              690ef14a99b7        18 months ago       241.9 MB
10.0.3.137:5000/rancher/agent                               v1.2.5              ef5fea38dbe6        18 months ago       237.1 MB
10.0.3.137:5000/rancher/network-manager                     v0.7.4              787fc137ac53        19 months ago       248.8 MB
10.0.3.137:5000/rancher/metadata                            v0.9.2              d46f30a656e0        19 months ago       251.5 MB
10.0.3.137:5000/rancher/net                                 v0.11.3             9495baae8faf        19 months ago       267.3 MB
10.0.3.137:5000/rancher/dns                                 v0.15.1             af5509fe436b        20 months ago       239.8 MB
10.0.3.137:5000/rancher/healthcheck                         v0.3.1              10710b438de7        21 months ago       383.9 MB
10.0.3.137:5000/infinityworks/graf-db                       11                  2c4fd7c7333a        21 months ago       4.531 MB
10.0.3.137:5000/prom/prometheus                             v1.6.0              c351d5f42485        21 months ago       75.29 MB
10.0.3.137:5000/infinityworks/prom-conf                     19                  ece6596a4ee7        21 months ago       3.985 MB
10.0.3.137:5000/rancher/net                                 holder              665d9f6e8cc1        21 months ago       267.2 MB
10.0.3.137:5000/grafana/grafana                             4.2.0               8c4ef64b4ad1        22 months ago       277.9 MB
10.0.3.137:5000/infinityworks/prometheus-rancher-exporter   v0.22.52            43b3ae5364ea        2 years ago         23.72 MB
10.0.3.137:5000/elasticsearch                               2.4.3-alpine        f3f4e44ce229        2 years ago         142.9 MB
10.0.3.137:5000/registry                                    latest              c9bd19d022f6        2 years ago         33.27 MB
docker.io/registry                                          latest              c9bd19d022f6        2 years ago         33.27 MB
10.0.3.137:5000/rancher/elasticsearch-conf                  v0.5.0              3d2a05b62289        2 years ago         20.46 MB
10.0.3.137:5000/rancher/kopf                                v0.4.0              f3e805a34ebd        3 years ago         182 MB
[root@server ~]# 

下面的client端

[root@client ~]# docker images
REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZE
10.0.3.137:5000/rancher/server                              v1.6.5              f89070da7581        12 months ago       984.9 MB
10.0.3.137:5000/mysql                                       8.0                 26bd364f80bf        13 months ago       342.5 MB
10.0.3.137:5000/google/cadvisor                             latest              75f88e3ec333        13 months ago       62.18 MB
10.0.3.137:5000/prom/node-exporter                          latest              ff5ecdcfc4a2        14 months ago       22.8 MB
10.0.3.137:5000/gogs/gogs                                   0.11.34             290bc4df94f2        14 months ago       139.1 MB
10.0.3.137:5000/rancher/lb-service-haproxy                  v0.7.9              774f6505bd28        18 months ago       311.8 MB
10.0.3.137:5000/rancher/scheduler                           v0.8.2              690ef14a99b7        18 months ago       241.9 MB
10.0.3.137:5000/rancher/agent                               v1.2.5              ef5fea38dbe6        19 months ago       237.1 MB
10.0.3.137:5000/rancher/network-manager                     v0.7.4              787fc137ac53        19 months ago       248.8 MB
10.0.3.137:5000/rancher/metadata                            v0.9.2              d46f30a656e0        19 months ago       251.5 MB
10.0.3.137:5000/rancher/net                                 v0.11.3             9495baae8faf        19 months ago       267.3 MB
10.0.3.137:5000/rancher/dns                                 v0.15.1             af5509fe436b        20 months ago       239.8 MB
10.0.3.137:5000/rancher/healthcheck                         v0.3.1              10710b438de7        21 months ago       383.9 MB
10.0.3.137:5000/infinityworks/graf-db                       11                  2c4fd7c7333a        21 months ago       4.531 MB
10.0.3.137:5000/prom/prometheus                             v1.6.0              c351d5f42485        21 months ago       75.29 MB
10.0.3.137:5000/infinityworks/prom-conf                     19                  ece6596a4ee7        21 months ago       3.985 MB
10.0.3.137:5000/rancher/net                                 holder              665d9f6e8cc1        22 months ago       267.2 MB
10.0.3.137:5000/grafana/grafana                             4.2.0               8c4ef64b4ad1        22 months ago       277.9 MB
10.0.3.137:5000/infinityworks/prometheus-rancher-exporter   v0.22.52            43b3ae5364ea        2 years ago         23.72 MB
10.0.3.137:5000/elasticsearch                               2.4.3-alpine        f3f4e44ce229        2 years ago         142.9 MB
10.0.3.137:5000/registry                                    latest              c9bd19d022f6        2 years ago         33.27 MB
10.0.3.137:5000/rancher/elasticsearch-conf                  v0.5.0              3d2a05b62289        2 years ago         20.46 MB
10.0.3.137:5000/rancher/kopf                                v0.4.0              f3e805a34ebd        3 years ago         182 MB
[root@client ~]# 

2.3、部署Rancher-Server服务

2.3.1、上传rancher-server镜像


# ll
-rw-r--r-- 1 root root 1000050176 Jan 29 06:23 rancher_server_v1.6.5.tar
# docker load -i rancher-server_v1.6.5.tar
# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              f89070da7581        3 weeks ago         984.9 MB
10.0.3.137:5000/registry   latest              c9bd19d022f6        15 months ago       33.27 MB
docker.io/registry         latest              c9bd19d022f6        15 months ago       33.27 MB
# docker tag f89070da7581 10.0.3.137:5000/rancher/server:v1.6.5
# docker push 10.0.3.137:5000/rancher/server:v1.6.5

2.3.2、启动rancher-server服务


# docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:v1.6.5;
2ff52cf39d6f2637ac300e7d430dc828fba99cef4ec118793e91e9d680a16509
# docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                              NAMES
2ff52cf39d6f        rancher/server:v1.6.5       "/usr/bin/entry /usr/"   18 seconds ago      Up 6 seconds        3306/tcp, 0.0.0.0:8080->8080/tcp   modest_turing
20a07207bf28        docker.io/registry:latest   "/entrypoint.sh /etc/"   39 minutes ago      Up 38 minutes       0.0.0.0:5000->5000/tcp             registry

2.3.3、通过网页访问

Rancher-server的访问地址是:serverIP:8080,访问结果如图2-1所示。

在这里插入图片描述
图2-1访问rancher-server服务

2.3.4、Rancher服务设置。

1.选择ADMIN-Access Controller,选择LOCAL进行认证设置,如图1-1、图1-2所示。

在这里插入图片描述
图1-1 Access Controller设置

在这里插入图片描述

图2-2 认证设置

2.选择ADMIN-Settings,下拉到最下面,找到Advanced Settings,如图2-3、图2-4所示。

在这里插入图片描述
图2-3 Settings设置

3、应用模板部署

3.1.1、点击应用商店,在搜索框中输入Go,查找Gogs应用服务,如图3-1所示。

在这里插入图片描述
图3-1 查找Gogs应用

3.1.2、查看Gogs的查看详情,选择默认模板版本v0.11.34,如图3-2所示。

在这里插入图片描述
图3-2 Gogs版本

3.1.3、自定义应用名称,设置端口,选择不被占用的端口,设置Mysql的密码,如图3-3所示。

在这里插入图片描述

图3-3 服务配置

3.1.4、下来Gogs部署设置,点击最下方的预览,查看具体的服务配置,如图3-4所示。

在这里插入图片描述
图3-4 Gogs的rancher-compose

3.1.5、点击预览下面的启动按钮,进行Gogs服务自动化部署,部署完成后点击应用,查看Gogs服务部署结果,如图3-5所示。

在这里插入图片描述

图3-5 Gogs服务部署成功

3.1.6、点击Gogs服务的访问端口8080,进行初始化设置,数据库的ip是对应db容器的ip,设置完生效后重新访问Gogs服务的8080端口,查看效果如图3-6、图3-7所示。

在这里插入图片描述
图3-6 Gogs初始化设置

在这里插入图片描述

3.2、Elasticsearch 2.x应用部署

3.2.1、上传镜像

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
10.0.3.138:5000/elasticsearch 2.4.3-alpine
10.0.3.138:5000/rancher/elasticsearch-conf v0.5.0 3d2a05b62289 21 months ago 20.46 MB
10.0.3.138:5000/rancher/kopf v0.4.0 f3e805a34ebd 2 years ago 182 MB

3.2.2、在应用商店查找Elasticsearch 2.x,如图3-8所示。

在这里插入图片描述
图3-8 查找Elasticsearch 2.x

3.2.3、配置Elasticsearch 2.x服务,如图3-9所示。

在这里插入图片描述

图3-9 配置Elasticsearch 2.x

3.2.4、启动自动化部署,如图3-10所示。

在这里插入图片描述

图3-10 自动化部署

3.2.5、通过网页访问Elasticsearch 2.x服务,端口是80,如图3-11所示。

在这里插入图片描述
图3-11 访问Elasticsearch 2.x

3.2.6、查看集群的各节点详情,如图3-12所示。

在这里插入图片描述
图3-12 节点详情

3.3、Prometheus应用部署
3.3.1、镜像上传

# docker images
REPOSITORY                                                  TAG                 IMAGE ID            CREATED             SIZE
10.0.3.137:5000/google/cadvisor                             latest              75f88e3ec333        7 weeks ago         62.18 MB
10.0.3.137:5000/prom/node-exporter                          latest              ff5ecdcfc4a2        7 weeks ago         22.8 MB
10.0.3.137:5000/infinityworks/graf-db                       11                  2c4fd7c7333a        9 months ago        4.531 MB
10.0.3.137:5000/prom/prometheus                             v1.6.0              c351d5f42485        9 months ago        75.29 MB
10.0.3.137:5000/infinityworks/prom-conf                     19                  ece6596a4ee7        9 months ago        3.985 MB
10.0.3.137:5000/grafana/grafana                             4.2.0               8c4ef64b4ad1        10 months ago       277.9 MB
10.0.3.137:5000/infinityworks/prometheus-rancher-exporter   v0.22.52            43b3ae5364ea        12 months ago       23.72 MB

3.3.2、应用商店查找Prometheus应用服务,如图3-13所示。

在这里插入图片描述

图3-13 查找Prometheus应用服务

3.3.3、Prometheus应用服务配置,然后启动自动化部署,如图3-14所示。

在这里插入图片描述

图3-15 Prometheus应用自动化部署

3.3.4、通过9090端口访问Prometheus应用,如图3-16所示。
在这里插入图片描述
图3-16 访问Prometheus应用

3.3.5、通过Prometheus应用查看go_memstats_heap_objects数据,如图3-17所示。

在这里插入图片描述
图3-17 数据展示

3.3.6、通过3000端口访问Grafana应用服务,如图3-18所示。

在这里插入图片描述

3.3.7、点击Sign up注册用户,输入Email地址注册,如图3-19所示。

在这里插入图片描述

图3-19 Grafana注册邮箱

3.3.8、设置用户名和密码,然后自动重新登录,如图3-20所示。

在这里插入图片描述

图3-20 Grafana注册用户

3.3.9、进入Grafana应用服务主页面,监控容器状态,如图3-21所示。

在这里插入图片描述

图3-21监控容器状态

这里我们要是实现Rancher-Server的HA部署,需要两台server节点和一台client,仓库可以使用上节部署的私有仓库,具体网络分配如下。

在这里插入图片描述

4.1、Server1节点部署Rancher-Server

4.1.1、安装Docker服务

#  yum install -y docker
# systemctl restart docker
# systemctl enable docker


4.1.2、添加私有仓库

ADD_REGISTRY='--add-registry 10.0.3.137:5000'
INSECURE_REGISTRY='--insecure-registry 10.0.3.137:5000'
# systemctl daemon-reload
# systemctl restart docker

4.1.3、安装、配置数据服务


# yum install -y mariadb  mariadb-server
# systemctl enable mariadb
# systemctl restart mariadb
# mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

4.1.4、创建公用数据库

# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
Query OK, 1 row affected (0.01 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

4.1.5、启动server节点的Rancher-server服务

#docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 10.0.3.137:5000/rancher/server:v1.6.5 --db-host 10.0.3.138 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-address 10.0.3.137

启动完成之后通过网页访问,如图4-1所示。

在这里插入图片描述
图4-1 访问Rancher-Server服务

点击ADMIN-High Availability,查看高可用主机,如图4-2所示。

在这里插入图片描述
图4-2 高可用主机

4.2、Server2节点部署Rancher-Server服务

4.2.1、安装Docker服务

#  yum install -y docker
# systemctl restart docker
# systemctl enable docker
4.2.2、配置私有仓库
# vi /etc/sysconfig/docker
ADD_REGISTRY='--add-registry 10.0.3.137:5000'
INSECURE_REGISTRY='--insecure-registry 10.0.3.137:5000'
# systemctl daemon-reload
# systemctl restart docker

4.2.3、启动server2节点Rancher-server服务


# docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 10.0.3.137:5000/rancher/server:v1.6.5 --db-host 10.0.3.138 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-address 10.0.3.138

启动完成之后通过网页访问,如图4-3所示。

在这里插入图片描述

图4-3访问Rancher-Server服务

点击ADMIN-High Availability,查看高可用主机,如图4-4所示。

在这里插入图片描述
图4-4 高可用主机

4.3、配置HA管理

haproxy服务最好安装在单独节点,这里资源紧张,所以我们就直接部署在server2节点上。

4.3.1、安装haproxy服务

# yum install -y haproxy

4.3.2、重写haproxy.cfg文件


[root@server1]# 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 *:80 //监听的端口
  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 10.0.3.137:8080 weight 1 maxconn 1024 //Rancher server IP:Port
  server websrv2 10.0.3.138:8080 weight 1 maxconn 1024 //Rancher server IP:Port

4.3.3、启动haproxy服务管理,访问server2:80,结果如图4-5所示。

[root@server1 v2.2]# haproxy -f /etc/haproxy/haproxy.cfg &
[1] 30956

在这里插入图片描述
图4-5 访问haproxy服务

4.3.4、测试高可用性

首先停止server1节点的Rancher-server容器,然后访问server2:80,如图4-6所示。

# docker stop d749f1bfacd9 

在这里插入图片描述
图4-6 访问haproxy服务

这里可以发现,即使我们两个server节点中的其中一个节点down掉,只要我们的haproxy正常运行,我们还是可以正常访问rancher-server服务的。

4.4、添加client节点

4.4.1、点击添加主机,如图4-7所示。

在这里插入图片描述

图4-7 添加主机

4.4.2、选择Custom,添加client节点的ip,复制黏贴键到client节点运行,如图4-8所示。

在这里插入图片描述
图4-8 设置ip

4.4.3 client节点正常运行,如图4-9所示。

在这里插入图片描述

图4-9 添加主机成功

5、容器数据卷共享

5.1、容器与主机之间映射共享卷

5.1.1、创建共享卷


mkdir /root/html
cd /root/html
echo "I am your host volume HTML." > /root/html/index.html 

5.1.2、启动web容器

docker run -itd --name web -p 81:80 -v /root/html:/usr/share/nginx/html 10.0.3.137:5000/nginx:latest

5.1.3、网页访问效果,如图5-1所示。

在这里插入图片描述
图5-1网页访问效果

5.2、三个容器之间使用共享卷

5.2.1、启动web1容器


docker run -itd --name web1 -p 81:80 -v /usr/share/nginx/html 10.0.3.137:5000/nginx:latest

5.2.2、启动web2容器,连接web1共享卷

docker run -itd --volumes-from web1 --name web2 -p 82:80  10.0.3.137:5000/nginx:latest

5.2.3、启动web3容器,连接web1共享卷

docker run -itd --volumes-from web1 --name web3 -p 83:80 10.0.3.137:5000/nginx:latest

5.2.4、修改web1共享卷内容

docker exec -it web1 /bin/bash
echo "Welcome,I am web1." > /usr/share/nginx/html/index.html

5.2.5、网页访问web1,效果如图5-2所示
在这里插入图片描述

图5-2网页访问web1

5.2.6、网页访问web2,如图5-3所示
在这里插入图片描述
图5-3 网页访问web2

5.2.7、网页访问web3,如图5-4所示
在这里插入图片描述
图5-4网页访问web3

6、自定义docker0网络
6.1、移除原有docker0网络
6.1.1、安装btctl命令

# yum install -y bridge-utils

6.1.2、查询网桥信息

# brctl  show                
bridge name     bridge id               STP enabled     interfaces
docker0         8000.024292c9c6e7       no

6.1.3、关闭docker服务

# systemctl stop docker

6.1.4、停止docker0网桥


#sudo ip link set dev docker0 down

6.1.5、删除docker0网桥

#sudo brctl delbr docker0

6.1.6查询所有网桥信息

# brctl show
bridge name     bridge id               STP enabled     interfaces


6.2、自定义新网络
6.2.1、创建新网桥bridge0

# sudo brctl addbr bridge0

6.2.2查询创建的bridge0

# brctl show
bridge name     bridge id               STP enabled     interfaces
bridge0         8000.000000000000       no

6.2.3、设置新网桥的网络段地址

# sudo ip addr add 192.168.5.1/24 dev bridge0

6.2.4、启动bridge0网桥

# sudo ip link set dev bridge0 up

6.2.5、查询bridge0网桥信息

# ifconfig bridge0
bridge0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.1  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::583e:86ff:fe9b:5254  prefixlen 64  scopeid 0x20<link>
        ether 5a:3e:86:9b:52:54  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 648 (648.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

6.2.6、添加新网桥到配置文件

#  vi /etc/sysconfig/docker
OPTIONS='-b=bridge0'


6.2.7、加载配置文件,重启docker服务

# systemctl daemon-reload
# systemctl restart docker

6.3、使用新网络部署应用
6.3.1、创建一个nginx容器

# docker run -itd 10.0.3.137:5000/nginx:latest

6.3.2、查看容器的状态

# docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS               NAMES
89ac3183748a        10.0.3.137:5000/nginx:latest   "nginx -g 'daemon off"   49 seconds ago      Up 43 seconds       80/tcp              tender_bardeen

6.3.3、查看容器的bridge

# docker inspect -f {{.NetworkSettings.Networks.bridge}} 89ac3183748a
{<nil> [] [] 71395d9b6fd02c4bd49973e63de3296b62f76adeacf737bbcf27fa310a353cc7 ad19393d4b4aaf205121dbd1952ed5b585f6f31320b62597c4ba35f05ea8e07a 192.168.5.1 192.168.5.2 24   0 02:42:c0:a8:05:02}

7、Dockerfile构建容器镜像

7.1、上传资源到系统

# pwd
/opt/web
[root@localhost web]# ll
[root@server web]# ll
total 146832
-rw-r--r-- 1 root root  7453955 Jan 31 03:00 apache-tomcat-7.0.56.zip
-rw-r--r-- 1 root root      589 Feb  2 00:58 Dockerfile
-rw-r--r-- 1 root root 74292096 Jan 31 04:30 jenkins.war
-rw-r--r-- 1 root root       67 Feb  2 00:48 local.repo
-rw-r--r-- 1 root root 68597387 Feb  2 00:37 yum.tar
说明:这次主要是做一个容器化Tomcat发布站点,发布内容是Jenkins工具。
Dockerfile是我们要构建镜像的基础文件,yum.tar是yum源软件包,local.repo是yum源文件,
这里根据自己的实际需求自行修改。

7.2、编写Dockerfile文件

# vi Dockerfile 
FROM 10.0.3.138:5000/centos:latest
MAINTAINER Xiandian
RUN rm -fv /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
ADD yum.tar /opt/
RUN yum clean all
RUN yum install -y java unzip
ENV LC_ALL en_US.UTF-8
ADD apache-tomcat-7.0.56.zip  /root/apache-tomcat-7.0.56.zip
RUN unzip /root/apache-tomcat-7.0.56.zip -d /root/
EXPOSE 8081
RUN chmod u+x /root/apache-tomcat-7.0.56/bin/*
ADD jenkins.war /root/apache-tomcat-7.0.56/webapps/ROOT.war
ENV CATALINA_HOME /root/apache-tomcat-7.0.56
CMD ${CATALINA_HOME}/bin/catalina.sh run

7.3、构建镜像

# docker build -t web:v1.0 .
Sending build context to Docker daemon 60.07 MB
Step 1 : FROM 10.0.3.137:5000/centos:latest
Trying to pull repository 10.0.3.137:5000/centos ... 
latest: Pulling from 10.0.3.137:5000/centos
af4b0a2388c6: Pull complete 
Digest: sha256:7e94d6055269edb455bcfb637292573117e4a8341e9b9abbc09b17d8aafe8fbe
 ---> ff426288ea90
Step 2 : MAINTAINER Xiandian
。。。。。
Step 13 : ADD jenkins.war /root/apache-tomcat-7.0.56/webapps/ROOT.war
 ---> 86f12bcb34e5
Removing intermediate container 7c3e4b171027
Step 14 : ENV CATALINA_HOME /root/apache-tomcat-7.0.56
 ---> Running in 583cce60f1b6
 ---> 9356da9a6cc0
Removing intermediate container 583cce60f1b6
Step 15 : CMD ${CATALINA_HOME}/bin/catalina.sh run
 ---> Running in fc5e797276b2
 ---> 1884a340e0cd
Removing intermediate container fc5e797276b2
Successfully built 1884a340e0cd

7.4、查询镜像

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED              SIZE
web                      v1.0                929a538a8b44        About a minute ago   520.7 MB
10.0.3.137:5000/centos   latest              ff426288ea90        3 weeks ago          207.2 MB

7.5、启动镜像

# docker run -itdP web:v1.0                     
ccfb7f2f7e10e361d761fb78816b871d8dc8f8964669b05ab6034ab829cc341
# docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                        PORTS                     NAMES
ac2df200990b        web:v1.0                   "/bin/sh -c '${CATALI"   35 seconds ago      Up 27 seconds                 0.0.0.0:32770->8081/tcp   jovial_northcutt

7.6、网页访问效果

查看10.0.3.139:32770,查看我们启动得容器,如图7-1所示。

在这里插入图片描述

7.7、进入容器获取登录密码再登录

7.7.1、进入容器查找密码


# docker exec -it ac2df200990b /bin/sh
sh-4.2# cat /root/.jenkins/secrets/initialAdminPassword
fe1a16527f704ffa9190695e32f9ceb8

7.7.2、输入密码,登录jenkins服务,如图7-2所示。
在这里插入图片描述
图7-2 登录jenkins

7.7.3、选择Install suggested plugins,然后continue,设置用户名和密码,设置完以后点击Save and Finish如图7-3所示。

在这里插入图片描述
图7-3 设置用户

7.7.4、设置完用户名之后,进入Getting Started设置,点击Started using Jenkins,如图7-4所示。
在这里插入图片描述
图7-4 设置完成

7.7.5、基本的设置完成以后,我们就可以正常使用Jinkens服务了,如图7-5所示

在这里插入图片描述
图7-5 Jenkins主页

8、Docker容器实现Nginx的负载均衡
8.1、上传实验镜像

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
10.0.3.137:5000/tomcat    latest              a92c139758db        8 days ago          557.4 MB
10.0.3.137:5000/nginx     latest              3f8a4339aadd        5 weeks ago         108.5 MB

8.2、在宿主机创建发布目录
创建www1、www2目录,并写一个默认欢迎页面。

# cd /
# mkdir www1 www2
# cd www1
# cat index.jsp 
<html>
    <head>
           <title>Tomcat1</title>
    </head>
    <body>
           <%
                  out.println("this is Tomcat1");
           %>
    </body>
</html>
# cd www2
# cat index.jsp 
<html>
    <head>
           <title>Tomcat2</title>
    </head>
    <body>
           <%
                  out.println("this is Tomcat2");
           %>
    </body>
</html>

8.3、创建Tomcat1容器

8.3.1、启动Tomcat1容器

# docker run -ti -d -P -h tomcat1 -v /root/www1:/usr/local/tomcat/webapps/ROOT 10.0.3.137:5000/tomcat:latest /bin/bash

8.3.2、查询Tomcat1容器


# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                     NAMES
610c47554b61        tomcat:latest   "/bin/bash"         13 hours ago        Up 13 hours         0.0.0.0:32768->8080/tcp   jovial_leakey

8.3.3、进入tomcat1容器,启动web服务,访问如图8-1所示。

# docker exec -it 610c47554b61 /bin/bash
root@tomcat1:/usr/local/tomcat# cd bin/         
root@tomcat1:/usr/local/tomcat/bin# startup.sh

在这里插入图片描述
图8-1 web1站点

8.4、创建Tomcat2容器

8.4.1、启动tomcat2容器

# docker run -ti -d -h tomcat2 -P -v /root/www2:/usr/local/tomcat/webapps/ROOT 10.0.3.137:5000/tomcat:latest /bin/bash
# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                     NAMES
dafb7bbc5160        tomcat:latest   "/bin/bash"         13 hours ago        Up 13 hours         0.0.0.0:32769->8080/tcp   distracted_galileo
610c47554b61        tomcat:latest   "/bin/bash"         13 hours ago        Up 13 hours         0.0.0.0:32768->8080/tcp   jovial_leakey

8.4.2、进入tomcat2容器,启动web服务,访问结果如图8-2所示。

# docker exec -it dafb7bbc5160 /bin/bash
root@tomcat2:/usr/local/tomcat# bin/startup.sh

在这里插入图片描述
图8-2 web2站点

8.5、创建nginx容器

创建nginx容器的时候注意端口80是不是被占用,如果被占用可以选择使用其他端口。
# docker run -itd -p 80:80 --name nginx nginx:latest /bin/bash
# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                     NAMES
dafb7bbc5160        docker.io/tomcat:latest   "/bin/bash"         13 hours ago        Up 13 hours         0.0.0.0:32769->8080/tcp   distracted_galileo
610c47554b61        docker.io/tomcat:latest   "/bin/bash"         14 hours ago        Up 14 hours         0.0.0.0:32768->8080/tcp   jovial_leakey
b595781ab635        docker.io/nginx:latest    "/bin/bash"         14 hours ago        Up 38 minutes       0.0.0.0:80->80/tcp        nginx
# docker exec -it b595781ab635 /bin/bash
# /usr/sbin/nginx

8.6、负载均衡配置

8.6.1、在宿主机新建一个nginx.conf文件

# vi nginx.conf 
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;




events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;


    include /etc/nginx/conf.d/*.conf;
//这个是定义Tomcat服务的负载均衡
upstream wei {

    server 10.0.3.139:32768;

    server 10.0.3.139:32769;

}
server {
    listen       80;
    server_name  10.0.3.139;//宿主机ip

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
//这个是调用Tomcat服务的负载均衡
    location / {
        proxy_pass http://wei;
    }
}
}
# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                     NAMES
b595781ab635        docker.io/nginx:latest    "/bin/bash"         14 hours ago        Up 45 minutes       0.0.0.0:80->80/tcp        nginx
# ll
-rw-r--r-- 1 root root 922 Feb  1 00:43 nginx.conf

8.6.2、将nginx.conf配置拷贝到nginx容器中

# docker cp /root/nginx.conf b595781ab635:/etc/nginx/nginx.conf

8.6.3、重启nginx容器,nginx服务。

# docker restart b595781ab635
# docker exec -it b595781ab635 /bin/bash
# /usr/sbin/nginx

8.7、查看实现效果
8.7.1、查询haproxy容器的输出

# for i in `seq 1 3`;do curl 10.0.3.139;done  
<html>
    <head>
           <title>Tomcat1</title>
    </head>
    <body>
           this is Tomcat1

    </body>
</html>
<html>
    <head>
           <title>Tomcat2</title>
    </head>
    <body>
           this is Tomcat2

    </body>
</html>
<html>
    <head>
           <title>Tomcat1</title>
    </head>
    <body>
           this is Tomcat1

    </body>
</html>

8.7.2、网页访问nginx的haproxy代理,如图8-3、8-4所示
在这里插入图片描述
图8-3 访问nginx代理

在这里插入图片描述
图8-4 访问nginx代理

通过访问的结果可以看出,我们访问nginx代理站点,能够访问Tomcat1和Tomcat2的服务,实现的负载均衡的效果。

以上便是docker容器在centos7环境下的部署搭建过程,以及Elasticsearch 2.x和Gogs以及Prometheus部署。
还有简单的docekr命令操作。

展开阅读全文

没有更多推荐了,返回首页