centos7安装harbor并使用nginx的proxy_next_upstream提高可用性

192.168.10.159 harbor-nginx

192.168.10.160 harbor01

192.168.10.161 harbor02

 

 

 

 

在harbor01和02上执行以下操作

# 安装docker 19.03.5

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum makecache fast

yum -y install docker-ce

service docker start

 

# 安装docker-compose 1.24.1

yum install python-pip python-devel –y

cd /opt

# 配置阿里云加速

mkdir ~/.pip

cat > ~/.pip/pip.conf <<EOF

[global]

index-url = http://mirrors.aliyun.com/pypi/simple/

[install]

trusted-host=mirrors.aliyun.com

EOF

cat >requirements.txt <<EOF

backports.ssl-match-hostname==3.5.0.1

bcrypt==3.1.7

cached-property==1.5.1

certifi==2019.9.11

cffi==1.13.2

chardet==3.0.4

Cheetah==2.4.4

configobj==4.7.2

cryptography==2.8

decorator==3.4.0

docker==3.7.3

docker-compose==1.24.1

docker-pycreds==0.4.0

dockerpty==0.4.1

docopt==0.6.2

enum34==1.1.6

functools32==3.2.3.post2

idna==2.7

iniparse==0.4

ipaddress==1.0.16

IPy==0.75

Jinja2==2.9.6

jsonpatch==1.16

jsonpointer==1.12

jsonschema==2.6.0

kitchen==1.1.1

Markdown==2.6.9

MarkupSafe==1.0

oauth==1.0.1

paramiko==2.6.0

perf==0.1

policycoreutils-default-encoding==0.1

prettytable==0.7.2

pycparser==2.19

pycurl==7.19.0

pygobject==3.22.0

pygpgme==0.3

pyliblzma==0.5.3

PyNaCl==1.3.0

python-linux-procfs==0.4.9

pytoml==0.1.14

pyudev==0.15

pyxattr==0.5.1

PyYAML==3.13

requests==2.20.1

schedutils==0.4

seobject==0.1

sepolicy==1.1

six==1.13.0

slip==0.4.0

slip.dbus==0.4.0

texttable==0.9.1

urlgrabber==3.10

urllib3==1.24.3

websocket-client==0.56.0

yum-metadata-parser==1.1.4

EOF

pip install -r requirements.txt

pip install docker-compose

 

下载harbor1.10.0

wget https://storage.googleapis.com/harbor-releases/release-1.10.0/harbor-offline-installer-v1.10.0.tgz

 

# 解压harbor-offline-installer-v1.10.0.tgz

tar xvf harbor-offline-installer-v1.10.0.tgz

# 修改配置文件harbor.yml  将hostname  改为自己的ip 并修改密码  其余不变(如果有自己的ssl证书那就修改证书路径 我是注释掉了443的配置)

 

cd harbor

# 安装harbor

./install.sh

# 安装完成

 

登陆http://192.168.10.160和http://192.168.10.161

 

 

 

删除两边的lib

 

 

在192.168.10.159上安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum makecache fast

yum -y install docker-ce

service docker start

 

下载nginx镜像1.12

docker pull nginx:1.12

创建文件夹/opt/nginx

mkdir –p /opt/nginx

创建nginx配置文件nginx.conf

cat >/opt/nginx/nginx.conf<<EOF

user nginx;

worker_processes 1;

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

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

 

stream {

  upstream hub{

  server 192.168.10.160:80;

}

  server {

    listen 80;

    proxy_pass hub;

    proxy_timeout 300s;

    proxy_connect_timeout 5s;

}

 

}

EOF

 

创建容器启动脚本restart.sh

cat > /opt/nginx/restart.sh <<EOF

#!/bin/bash

docker stop harbornginx

docker rm harbornginx

docker run -idt --net=host --name harbornginx -v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf nginx:1.12

EOF

 

启动nginx容器

sh /opt/nginx/restart.sh

 

 

访问http://192.168.10.159

 

 

在192.168.10.159上打tag

docker tag  nginx:1.12 harbor.pdabc.com/kubernetes/nginx:1.2

修改/etc/hosts增加

192.168.10.159 harbor.pdabc.com

 

修改/etc/docker/daemon.json  

cat >/etc/docker/daemon.json <<EOF

{

    "insecure-registries": ["harbor.pdabc.com"]

}

EOF

 

重启docker使配置生效

systemctl daemon-reload

service docker restart

 

重启之后确保容器已经启动 尤其是nginx这些

 

登录192.168.10.160

创建项目kubernetes

 

添加成员pusher   密码为Hangzhou@123

 

 

 

 

 

登录harbor.pdabc.com  并输入pusher的账号密码 pusher/Hangzhou@123

docker login harbor.pdabc.com

 

 

push 镜像

docker push harbor.pdabc.com/kubernetes/nginx:1.2

 

在其余服务器上pull镜像尝试  也需要设置/etc/hosts 和/etc/docker/daemon.json

docker pull harbor.pdabc.com/kubernetes/nginx:1.2

 

 

在192.168.10.160上仓库管理>新建目标

 

输入用户名密码 地址等信息

测试连接并保存

 

 

新建同步规则 如下  选择事件驱动

定时任务也可以

 

 

pull请求也设置一个 这个不能时间驱动在本机上设置定时任务我这里设置10分钟触发一次

 

在161上也设置相同的规则

 

 

push一个镜像测试

docker tag  nginx:1.12 harbor.pdabc.com/kubernetes/nginx:1.12

docker push harbor.pdabc.com/kubernetes/nginx:1.12

 

两边都有了

 

 

 

 

打算用nginx 改造一下,实现高可用,也可能只是本菜鸡画蛇添足罢了.  关闭docker 启动的nginx  并安装一个1.14版本的nginx 使用如下配置文件

 

user root;

pid /var/run/nginx.pid;

worker_processes 1;

worker_rlimit_nofile 100000;

events {

    worker_connections 2048;

    multi_accept on;

    use epoll;

}

 

http {

log_format access_json '{ "@timestamp": "$time_iso8601", '

                         '"time": "$time_iso8601", '

                         '"remote_addr": "$remote_addr", '

                         '"remote_user": "$remote_user", '

                         '"body_bytes_sent": "$body_bytes_sent", '

                         '"request_time": "$request_time", '

                         '"status": "$status", '

                         '"host": "$host", '

                         '"request": "$request", '

                         '"request_method": "$request_method", '

                         '"uri": "$uri", '

                         '"http_referrer": "$http_referer", '

                         '"body_bytes_sent":"$body_bytes_sent", '

                         '"http_x_forwarded_for": "$http_x_forwarded_for", '

                         '"http_user_agent": "$http_user_agent" '

                    '}';

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

  error_log   /var/log/nginx/error.log;

upstream harbor {

    ip_hash;

    server 192.168.10.160:80 weight=1 max_fails=3 fail_timeout=30s;

    server 192.168.10.161:80 weight=1 max_fails=3 fail_timeout=30s;

}

server {

    listen       80;

    server_name  localhost;

 

location / {

    proxy_next_upstream http_500  http_502  http_503 http_504 ;

    proxy_redirect off;

    proxy_set_header HOST $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass    http://harbor;

 

}

 

}

 

}

 

nginx proxy_next_upstream 可以参考下面博客 自己没整理

https://www.cnblogs.com/kevingrace/p/8185218.html

 

这里不用ip hash的话会报下面2张图的错  一定要用ip hash哦

 

 

 

 

 

在160上创建一个tag  以便区分转发的时候转到哪一台.

 

 

 

 

 

 

 

 

开启160的防火墙 模拟故障发生  159 不能访问160的80

前3次访问 都是返回502

 

累计三次之后  转发到161了  此时160其实还是不能服务的.

 

完成测试~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值