Hand-polars笔记:环境部署

文章目录

    • 前置条件
    • 离线安装Docker
      • 下载docker安装包
      • 解压并授权
      • 添加 docker 配置文件
      • 启用 docker 服务(随系统引导自启)
      • 重载配置并启用服务
      • 授权 docker 给其他用户
    • 安装docker私有仓库(可选)
      • 登录 nexus 控制台创建私库
      • docker配置无证书的私有仓库地址
    • 安装rancher
      • 创建集群并且添加主机
    • 安装apollo配置中心(配置说明)
      • 构建apollo配置中心镜像
      • 导入mysql镜像到私有仓库
        • 部署mysql
      • 导入配置中心数据
      • 部署apollo
        • 登录apollo查看服务是否正常
    • 部署服务案例
      • 将部署服务的镜像导入到私有仓库
      • 在数据库创建对应的database(mysql)
      • 修改配置中心里面的一些配置
      • 部署配置中心
      • 部署网关
      • 部署redis
      • 部署rabbitmq
      • 部署分布式事务管理器
      • 部署auth服务
      • 部署base服务
      • 部署mdata服务
      • 部署前端服务
      • 测试

前置条件

1、服务器内核版本必须3.10以上

#查看内核版本
cat /proc/version   

2、关闭selinux或者安装container-selinux

vi  /etc/selinux/config

config文件中,修改SELINUX的值为 disabled:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

3、关闭防火墙

#关闭防火墙
systemctl stop firewalld
#禁用防火墙
systemctl disable firewalld
#重启系统
reboot   

离线安装Docker

下载docker安装包

curl -O https://download.docker.com/linux/static/stable/x86_64/docker-19.03.5.tgz

解压并授权

#解压刚下载的压缩包
tar -xzf docker-19.03.5.tgz
#将加压后的所有人间复制到/usr/bin下
cp docker/* /usr/bin
#授权
chmod +x /usr/bin/docker* \
      /usr/bin/container* \
      /usr/bin/runc \
      /usr/bin/ctr

添加 docker 配置文件

进入/etc/docker目录(目录不存在则创建该目录mkdir -p /etc/docker

在该目录的 daemon.json (文件不存在则创建该文件) 文件里添加下述内容

{
    "data-root":"docker目录位置,自行设置,磁盘要够大",
    "insecure-registries": ["不含证书的镜像仓库地址可以是多个", "如: 192.168.137.111:4000"]
}
#如下例:
{
    "data-root":"/app/docker",
    "insecure-registries": ["192.168.92.139:5000","192.168.92.139:5001"]
}

启用 docker 服务(随系统引导自启)

创建 docker.service, 将该文件复制到 /usr/lib/systemd/system/ 目录下

docker.service文件内容如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify

# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process

# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

重载配置并启用服务

systemctl daemon-reload
systemctl enable docker
systemctl start docker

授权 docker 给其他用户

#创建docker用户组 
groupadd docker 

#新增hcf用户指定到用docker用户组 
useradd hcf -g docker 
usermod -aG wheel hcf

#设置hcf用户的密码(centos123)
passwd hcf

安装docker私有仓库(可选)

如果项目无docker镜像仓库,则需要部署镜像仓库,反之不需要,docker镜像仓库只需要部署一个即可

1、拉取sonatype/nexus3镜像

sudo docker pull sonatype/nexus3

2、将拉取的镜像保存为可以导入的压缩文件 nexus.tar.gz

sudo docker save sonatype/nexus3 |gzip -c > nexus.tar.gz

3、将上述导出的nexus.tar.gz文件复制到离线的服务器,运行下述命令导入镜像

这里模拟离线安装,将安装包导入离线服务器

sudo docker load --input nexus.tar.gz

4、运行nexus

mkdir -p /app/nexus-data | chmod -R 777 /app/nexus-data 

sudo docker run --restart=unless-stopped -d 
-p 5000-5010:5000-5010 
-p 8081:8081 
-v /app/nexus-data:/nexus-data 
--name nexus sonatype/nexus3

#说明:
#-p 表示将服务器的端口与容器端口映射
#-v 表示将服务器的目录与容器的目录映射
#其中 nexus 映射的服务器路径要有权限
#其中8081端口是对应nexus的管理界面的端口
#5000-5010 表示5000到5010端口,后面创建私有仓库时端口必须在5000到5010之间

登录 nexus 控制台创建私库

登录nexus控制台 IP:8081 其中8081为上一步映射的主机端口

服务器命令行进入/app/nexus-data目录,查看 admin.password 文件,看admin用户的密码(51eab23c-ec10-4d1f-b720-e64d61685323)

其中:/app/nexus-data是主机映射到容器目录/nexus-data的目录

在 nexus 管理界面按提示步骤进行操作,进入控制台设置

1、首先登录管理平台,然后按照下列步骤创建docker仓库

http那里填写的端口必输是上面步骤里面容器里面的5000-5010端口之间,勾选允许匿名拉取镜像
Hand-polars笔记:环境部署_第1张图片
然后点击下方按钮创建。

2、关闭令牌认证
Hand-polars笔记:环境部署_第2张图片

docker配置无证书的私有仓库地址

进入/etc/docker 目录,更改daemon.json文件,在里面的insecure-registries属性上添加刚刚创建的私有仓库地址

{
"data-root":"/app/docker",#docker安装目录
"insecure-registries":["192.168.92.138:5000"]#配置新创建的仓库地址
}

重启docker服务,然后登录私有仓库,看是否能够登录

#重启docker
systemctl restart docker

#登录私库
[root@localhost docker]# docker login 192.168.92.138:5000
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@localhost docker]# 

安装rancher

1、从https://github.com/rancher/rancher/releases 选择指定的版本,下载**rancher-images.txt**
rancher-load-images.sh 、rancher-save-images.sh 这三个文件

再将上述下载好的rancher-images.txtrancher-save-images.sh两个文件放置于安装好dokcer并且能访问公网的服务器上。

2、在服务器上执行下述命令导出所需镜像

  sh rancher-save-images.sh

执行完成后会存在一个名字为rancher-images.tar.gz的压缩包

3、将上一步导出的rancher-images.tar.gz 和下载的rancher-images.txt以及rancher-load-images.sh文件拷贝至可以连接docker私有仓库并且安装了docker的服务器上

4、登录docker私有仓库

 docker login 192.168.92.138:5000

5、执行下述命令将rancher所需的镜像上传到私有仓库

sh rancher-load-images.sh -r 192.168.92.138:5000/hcf

6、运行rancher服务

sudo docker run -d -p 9080:80 -p 9043:443 --restart=unless-stopped --name rancher-server 有仓库rancher/rancher镜像

#如: 
sudo docker run -d 
-p 9080:80 
-p 9043:443 
--restart=unless-stopped 
--name rancher-server  192.168.92.138:5000/hcf/rancher/rancher:v2.3.2

#其中端口映射容器的80端口和443端口,具体使用什么端口映射请根据实际情况使用

创建集群并且添加主机

打开rancher管理界面https://[宿主机ip]:[宿主机映射到rancher容器443端口的具体端口]

https://192.168.92.138:9043

进入管理界面按提示设置admin的密码。

设置创建集群拉取镜像的私有仓库地址

  1. 全局设置

需要在 全局–系统设置–system-default-registry 这个值去设置私有仓库的地址,前提是私有仓库需要可以免密拉取

192.168.92.138:5050/hcf
  1. 单个集群设置

在创建集群的时候指定这个集群拉取镜像的私有仓库,但是生成的注册主机命令中涉及到的rancher/rancher-agent镜像是公网的镜像,需要手动更改为私有仓库的镜像。

添加集群--->自定义--->输入集群名称--->私有镜像仓库设置启用,高级选项中docke根目录设置为自己安装的docker根目录--->下一步

Hand-polars笔记:环境部署_第3张图片

点击下一步后,跳转到如下页面,勾选Etcd、Control、Worker,然后复制下列的shell命令在虚拟机中执行,最后确认,等待拉取所需的镜像后集群就运行起来了。

Hand-polars笔记:环境部署_第4张图片

安装apollo配置中心(配置说明)

构建apollo配置中心镜像

1、导入下载好的apollo镜像文件(apollo-1.4.0.tar.gz)

sudo docker load --input apollo-1.4.0.tar.gz

2、将镜像push到私有仓库

#sudo docker tag apollo:1.4.0 私有仓库地址/命名空间/apollo:1.4.0
sudo docker tag apollo:1.4.0 192.168.92.139:5000/hcf/apollo:1.4.0

#sudo docker login 私有仓库地址 (登录过就可以不需要登录了)
sudo docker login 192.168.92.139:5000

#sudo docker push私有仓库地址/命名空间/apollo:1.4.0
sudo docker push 192.168.92.139:5000/hcf/apollo:1.4.0

导入mysql镜像到私有仓库

1、导入mysql镜像,导入下载好的mysql镜像文件(mysql-5.7.tar.gz)

sudo docker load --input mysql-5.7.tar.gz

2、将镜像push到私有仓库

#sudo docker tag mysql:5.7 私有仓库地址/命名空间/mysql:5.7
sudo docker tag mysql:5.7 192.168.92.139:5000/hcf/mysql:5.7

#sudo docker login 私有仓库地址 (登录过就可以不需要登录了)
sudo docker login 192.168.92.139:5000

#sudo docker push 私有仓库地址/命名空间/mysql:5.7
sudo docker push 192.168.92.139:5000/hcf/mysql:5.7

部署mysql

1、创建数据目录

mkdir -p /app/mysql/conf
mkdir -p /app/mysql/logs
mkdir -p /app/mysql/data
chmod -R 777 /app/mysql

2、复制mysql配置文件mysqld.cnf/app/mysql/conf目录

cp mysqld.cnf /app/mysql/conf

3、运行Mysql

#sudo docker run -p 3306:3306 -d 
#--restart=unless-stopped 
#--name mysql 
#-v /app/mysql/conf:/etc/mysql/conf.d 
#-v /app/mysql/data:/var/lib/mysql 
#-v /app/mysql/logs:/logs 
#-e MYSQL_ROOT_PASSWORD=123456 
#-d 私有仓库地址/命名空间/mysql:5.7
#例如:
sudo docker run -p 3306:3306 -d 
--restart=unless-stopped 
--name mysql 
-v /app/mysql/conf:/etc/mysql/conf.d 
-v /app/mysql/data:/var/lib/mysql 
-v /app/mysql/logs:/logs 
-e MYSQL_ROOT_PASSWORD=123456 
-d 192.168.92.139:5000/hcf/mysql:5.7

#其中:
#-p 表示主机和容器的端口做映射
#-v 表示主机和容器目录进行挂载
#-e 表示设置容器环境变量的值,这里表示mysql root用户的密码

导入配置中心数据

不出意外此时可以利用Navicat连接数据库。

创建数据库用户

CREATE USER hcf@'%' IDENTIFIED BY 'handhand';

CREATE USER hcf@'localhost' IDENTIFIED BY 'handhand';

GRANT ALL PRIVILEGES ON . TO hcf@'%';

GRANT ALL PRIVILEGES ON . TO hcf@'localhost';

flush privileges;

使用新建的用户登录

将下载好的apolloconfigdb.sql 、apolloportaldb.sql两个sql文件导入到数据库

部署apollo

sudo docker run -d --restart=unless-stopped -p 8170:8170 \
-p 8180:8180 \
-p 8190:8190 \
-e DEV_ADMIN_PORT=8190 \
-e DEV_CONFIG_PORT=8180 \
-e DEV_DB=jdbc:mysql://数据服务器ip:端口/apolloconfigdb?characterEncoding=utf8 \
-e DEV_DB_PWD=数据库用户密码 \
-e DEV_DB_USER=数据库用户名 \
-e DEV_IP=主机ip \
-e JAVA_OPTS=-Deureka.service.url=http://localhost:8180/eureka/ \
-e PORTAL_DB=jdbc:mysql://数据库ip:端口/apolloportaldb?characterEncoding=utf8 \
-e PORTAL_DB_PWD=数据库用户密码 \
-e PORTAL_DB_USER=数据库用户名  \
--name apollo 私有仓库地址/命名空间/apollo:1.4.0

##例如:
sudo docker run -d --restart=unless-stopped -p 8170:8170 \
-p 8180:8180 \
-p 8190:8190 \
-e DEV_ADMIN_PORT=8190 \
-e DEV_CONFIG_PORT=8180 \
-e DEV_DB=jdbc:mysql://192.168.92.139:3306/apolloconfigdb?characterEncoding=utf8 \
-e DEV_DB_PWD=handhand \
-e DEV_DB_USER= hcf \
-e DEV_IP=192.168.92.139 \
-e JAVA_OPTS=-Deureka.service.url=http://localhost:8180/eureka/ \
-e PORTAL_DB=jdbc:mysql://192.168.92.139:3306/apolloportaldb?characterEncoding=utf8 \
-e PORTAL_DB_PWD=handhand \
-e PORTAL_DB_USER=hcf  \
--name apollo 192.168.92.139:5000/hcf/apollo:1.4.0

登录apollo查看服务是否正常

登录 http://主机ip:8170 ,例如http://192.168.92.139:8170

用户名/密码 : apollo/amdin

点击 管理员工具—>系统信息

点击Check Health 中的check查看服务是否正常

部署服务案例

下列以部署HCF-polaris为例

将部署服务的镜像导入到私有仓库

登录docker私有仓库

docker login 192.192.168.100:5000

执行下述命令将rancher所需的镜像上传到私有仓库

sh polaris-load-images.sh -r 192.168.137.100:5000/hcf

在数据库创建对应的database(mysql)

创建base服务的数据库

CREATE DATABASE IF NOT EXISTS hcf_base DEFAULT CHARACTER SET = utf8mb4;

创建mdata服务的数据库

CREATE DATABASE IF NOT EXISTS hcf_mdata DEFAULT CHARACTER SET = utf8mb4;

修改配置中心里面的一些配置

  • 修改apollo配置中心里面的数据库等信息
  • 修改网关等其他的相关服务发现地址

部署配置中心

登录 rancher —> 选择集群 —> 选择项目—> 新建工作负载

设置环境变量

EUREKA_INSTANCE_HOSTNAME=register

JAVA_TOOL_OPTIONS=-Xmx512m -Dspring.profiles.active=init -Deureka.server.enable-self-preservation=false

SERVER_PORT=9070

Hand-polars笔记:环境部署_第5张图片
Hand-polars笔记:环境部署_第6张图片

部署网关

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载

设置环境变量

JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.92.138:8180

Hand-polars笔记:环境部署_第7张图片

Hand-polars笔记:环境部署_第8张图片

部署redis

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载

Hand-polars笔记:环境部署_第9张图片

Hand-polars笔记:环境部署_第10张图片

部署rabbitmq

(镜像是 rabbitmq:3.7.8-management )

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
Hand-polars笔记:环境部署_第11张图片

Hand-polars笔记:环境部署_第12张图片

部署分布式事务管理器

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量

JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.92.139:8180

Hand-polars笔记:环境部署_第13张图片

部署auth服务

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量

JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.137.100:8180 -Dapollo.bootstrap.namespaces=common,application

Hand-polars笔记:环境部署_第14张图片

部署base服务

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量

JAVA_TOOL_OPTIONS=-Xmx512m -Dapollo.meta=http://192.168.137.100:8180 -Dapollo.bootstrap.namespaces=common,application

Hand-polars笔记:环境部署_第15张图片

部署mdata服务

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量

JAVA_TOOL_OPTIONS=-Xmx1200m -Dapollo.meta=http://192.168.137.100:8180 -Dapollo.bootstrap.namespaces=common,application

Hand-polars笔记:环境部署_第16张图片

部署前端服务

登录 rancher —> 选择集群 —> 选择项目 —> 新建工作负载
设置环境变量

MAX_FILE_SIZE=100m

SERVER_NAME=网关的ip  

Hand-polars笔记:环境部署_第17张图片

测试

访问http://IP:9081使用admin登录,如果能登录成功则部署成功。

你可能感兴趣的:(Hand,java,Linux)