架构图
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" [email protected]:"/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 {
[email protected] #设置报警收件人邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
}
notification_email_from [email protected]#发件人
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
访问测试