python私有仓库搭建(Nexus)

架构图

Nexus安装
1.安装docker

sudo dnf update -y
sudo dnf install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io

2.docker拉取镜像

mkdir /data/nexus-data -p #映射到/data/nexus-data 目录下
 
docker run -d -p 8081:8081 --name nexus -v /data/nexus-data:/nexus-data sonatype/nexus3 
 
docker exec nexus cat /nexus-data/admin.password #查看密码

3.Nexus仓库设置(主)


4.Nexus仓库设置(备)
跟主的配置是一样的。
5.同步仓库
1.设置主仓库的备份时间为每天的0点

#我这里的nexus3是使用docker安装的,我从挂载目录里面装数据拿出来打包
cd  /data/nexus-data
dateLog=$(date +%y%m%d)
  
#echo${dateLog}
  
mkdir "nexus_backup_"$dateLog""
  
chmod -R 777 "nexus_backup_"$dateLog""
  
cp -r  /opt/nexus3/nexus-data/nexus-data/backups  "/opt/nexus3/nexus-data/nexus-data/nexus_backup_"$dateLog""
  
#想要完整恢复需要如下两个文件
cp -r /data/nexus-data/blobs  "/data/nexus-data/nexus_backup_"$dateLog""
  
cp -r /data/nexus-data/keystores  "/data/nexus-dataexus-data/nexus_backup_"$dateLog""
  
sleep 2
  
tar -czvf "nexus_backup_"$dateLog".tar.gz"  "nexus_backup_"$dateLog""
  
#传输到备份服务器上
sshpass -p xxxxx密码 scp  "/opt/nexus3/nexus-data/nexus-data/nexus_backup_"$dateLog".tar.gz"  root@10.5.2.xxx:"/opt/backup/nexus/nexus_backup_"$dateLog".tar.gz"
  
sleep 4
  
rm -rf nexus_backup_"$dateLog"*
  
#进入到定时任务生成的备份文件夹,删除备份文件
cd /data/nexus-data/nexus-data/backups
  
#删除主机生成的备份文件
rm -rf *

3.我这里设置高可用出现了 机器宕机的情况还是可以访问VIP的IP(一样也是可以拉取镜像)需要手动同步一下。
6.更新日志查看&&删除包操作

7.高可用
使用keepalived跟nginx 进行设置高可用

nginx配置主要配置
 
# Load modular configuration files from the /etc/nginx/conf.d directory.
    include /etc/nginx/conf.d/*.conf;
 
    upstream nexus_backend {
        server 192.168.60.56:8081 max_fails=3 fail_timeout=10s;
        server 192.168.61.44:8081 backup;
    }
 
    server {
        listen 80;
        server_name 192.168.61.8;  # Use the virtual IP address provided by Keepalived
 
        location / {
            proxy_pass http://nexus_backend;
            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_set_header X-Forwarded-Proto $scheme;
 
            proxy_redirect off;
            proxy_http_version 1.1;
        }
 
global_defs {
    notification_email {
        luoxing@tenorshare.cn  #设置报警收件人邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
    }
    notification_email_from luoxing@tenorshare.cn#发件人
    smtp_server smtp.qq.com   #设置SMTP Server地址
    smtp_connection_timeout 30   #设置SMTP Server的超时时间
    router_id nginx_master       #表示运行Keepalived服务器的一个标识,唯一的
}
#检测脚本
vrrp_script chk_http_port {
#    script "killall -0 nginx" # 这个脚本只做信号检查,功能弱了一些,一般都自定义脚本
    script "/opt/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight -2                            #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备 说明:可以都设置为BACKUP,先启动为主,然后nopreempt才能有效
    interface ens18         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66    # 虚拟路由编号,主从要一致
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    nopreempt               # 设置为不抢占,说明:这个配置只能在BACKUP主机上面设置 
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.61.200            # 定义虚拟ip(VIP),可多设,每行一个
    }
}```


```检测nginx存活脚本
 
# vim /opt/chk_ngx.sh    # 监测nginx负载均衡服务的脚本,可根据nginx进程状态来切换keepalived的状态。
#!/bin/bash
status=$(ps -C nginx --no-headers | wc -l)
if [ $status -eq 0 ]; then    # nginx服务停止后,再次启动nginx。
    /usr/local/nginx/sbin/nginx
    sleep 2
    counter=$(ps -C nginx --no-headers | wc -l)
    if [ "${counter}" -eq 0 ]; then    # nginx再次启动失败后,停止master节点的keepalived,切换并启用backup节点。
        systemctl stop keepalived
    fi  
fi

访问测试

posted @ 2024-09-24 15:36  Rohin1  阅读(45)  评论(0编辑  收藏  举报