跳转至
首页 解决方案 下载 文档
演示环境

OpsAny 控制器Proxy部署

OpsAny Proxy就是【管控平台】中的控制器的概念,OpsAny支持多控制器也就是多Proxy的模式。例如在多数据中心、混合云场景或者单个云提供商不同区域之间网络不通的情况下。可以在每个区域来部署一个opsany-proxy,该proxy负责管理该区域的主机。但是所有的控制器(proxy)需要和OpsAny总控端进行通信。

  • OpsAny平台需要访问到所有Proxy的8011端口,用于任务下发。
  • Proxy需要访问到OpsAny的80和443端口,用于获取任务的脚本和文件。

提示,这里有一个常见的问题,如果你把OpsAny部署在内网主机,没有公网IP,那么你无法通过作业平台对外网的主机进行控制,即便你部署了Proxy也无法执行,因为上面第二个的网络原因。Proxy需要访问到OpsAny的80和443端口,用于获取任务的脚本和文件。如果你有更好的方案,欢迎在社区微信群提出来。

Proxy部署

Proxy部署概况

我们为Proxy准备了单独的部署脚本放置在install/proxy-install.sh,该脚本会部署四个容器:

  • opsany-proxy-mysql:这个是Proxy使用的MySQL数据库。 端口:3306
  • opsany-proxy-redis:这个是Proxy使用的Redis缓存。端口:6379
  • opsany-proxy-openresty: 这个是Nginx代理,端口:8011(https) 8012(http)
  • opsany-proxy:这个是Proxy的容器。端口:8010,一般不会使用,而是使用代理的8011和8012端口。

此脚本主要用于单独添加Proxy时使用,默认安装OpsAny会启动一个内置的控制器(Proxy),和OpsAny其它服务共享MySQL和Redis实例。

Proxy部署手册

1.安装Docker和初始化使用的软件包

1.1安装Docker和MySQL

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y git wget docker-ce mariadb jq python3 python3-pip ntpdate
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate time1.aliyun.com

1.1安装Docker和MySQL

dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf -y install docker-ce --nobest
dnf -y install mariadb jq git
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.1.安装Docker和MySQL客户端

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce jq wget mysql-client git ntpdate
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate time1.aliyun.com

如果是Ubuntu 16.04 需要额外安装Python3和pip sudo apt-get -y install python3 python3-pip

2.克隆代码

cd /opt && git clone https://gitee.com/unixhot/opsany-paas.git
cd /opt && git clone https://github.com/unixhot/opsany-paas.git

3.修改安装配置【必须修改】

Tip

注意!注意!注意!需要确保OpsAny能够访问到Proxy的8011端口。配置文件中的DOMAIN_NAME不需要配置,Proxy不会使用。

#从配置模板生成配置文件
cd /opt/opsany-paas/install && cp install.config.example install.config

# 设置Proxy的内网IP地址
PROXY_LOCAL_IP=192.168.56.11
# 修改为Proxy的公网IP地址
PROXY_PUBLIC_IP=proxy.opsany.com


# 批量修改访问域名和IP地址
sed -i "s/192.168.56.11/${PROXY_LOCAL_IP}/g" install.config
sed -i "s/proxy.opsany.com/${PROXY_PUBLIC_IP}/g" install.config

# 可以自行修改其它的设置
vim /opt/opsany-paas/install/install.config
# Network
DOMAIN_NAME="demo.opsany.com".        #此配置不需要修改,Proxy不用
PROXY_LOCAL_IP="192.168.56.11"       #此配置在上面命令已经替换完毕。为Proxy的内网地址
PROXY_PUBLIC_IP="192.168.56.11"       #此处修改为Proxy的外网地址,如果没有,也可以设置为内网地址。

请确定修改模版文件中所有的192.168.56.11为部署本机的内网IP地址。

4.执行安装脚本进行Proxy部署

注意!千万不要在已经安装了OpsAny社区版的主机的上执行该脚本,默认已经自带的Proxy,不要重复安装。

cd /opt/opsany-paas/install
./proxy-install.sh install

执行完毕后,会自动输出Proxy Token,请在【管控平台】-【采控管理】-【控制器】新建控制器,填写Proxy的IP地址和Token。

  • Proxy地址: https://IP地址:8011
  • Proxy密钥: 脚本输出的Proxy Token。不要增加引号!

5.下载OpsAny Agent到Proxy主机上,用于自动安装监控插件时下载。

cd /opt/opsany/uploads/
wget https://opsany-saas.oss-cn-beijing.aliyuncs.com/opsany-agent-1.6.0.tar.gz
tar zxf opsany-agent-1.6.0.tar.gz

所有被纳管的主机需要访问到Proxy的8011和8012端口,用于下载Agent和监控插件的部署包。


独立部署Proxy的更新手册

独立部署的Proxy更新可以直接进行容器的替换操作后,执行数据库变更即可。

1.替换Proxy镜像 请根据更新文档,确定Proxy的最新镜像版本,停止并删除老版本容器,使用新镜像启动容器即可。

docker stop opsany-proxy
docker rm opsany-proxy
cd /opt/opsany-paas/install
source install.config

#请将对应的Docker版本进行修改即可。
mkdir -p ${INSTALL_PATH}/proxy-volume/pki
docker run --restart=always --name opsany-proxy -d \
        -p 4505:4505 -p 4506:4506 -p 8010:8010 \
        -v ${INSTALL_PATH}/logs:${INSTALL_PATH}/logs \
        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \
        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \
        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \
        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \
        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \
        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \
        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy-standalone:/opt/opsany-proxy/config/prod.py \
        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \
        -v ${INSTALL_PATH}/proxy-volume/pki:/opt/opsany/pki \
        -v /etc/localtime:/etc/localtime:ro \
        ${PAAS_DOCKER_REG}/opsany-proxy:1.2.21

2.手工更新Proxy数据库

docker exec -e OPS_ANY_ENV=production \
        opsany-proxy /bin/sh -c "/usr/local/bin/python3 /opt/opsany-proxy/manage.py makemigrations && /usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate"

Proxy安全设置

我们建议你将Proxy的8011和8012端口进行安全访问控制,只运行OpsAny平台的IP地址进行访问。这样可以进一步的保护Proxy安全性。

Proxy卸载

Proxy卸载时会停止并删除Proxy使用的4个容器,并且完全移除安装目录/opt/opsany。危险操作,请再次确认是在独立的Proxy的主机上执行。

cd /opt/opsany-paas/install
./proxy-uninstall uninstall

提示,OpsAny的Proxy和堡垒机网络代理并没有直接的关系,只是我们通常建议Proxy的主机,也作为堡垒机网络代理的主机。因为需要设置SSH用户和密码,所以部署脚本并不会做这些未授权的操作,需要你在堡垒机中自行添加网络代理。网络代理用的是SSH的隧道功能,和Proxy无关。

Document