Linux 挂载本地iso镜像搭建yum源和使用nginx搭建yum仓库

挂载本地iso镜像搭建yum源

mkdir -p /mnt/iso
mount -o loop /home/cloudman/BCLinux-for-Euler-21.10-dvd-x86_64.iso /mnt/iso/
cat > /etc/yum.repos.d/local.repo <<EOF
[LocalRepo]
name=Local ISO Repo
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
EOF
yum clean all
yum repolist
yum install telnet 

使用nginx搭建yum仓库

[root@tj-test-ansible ~]# yum install -y nginx                                                                                    #装包
[root@tj-test-ansible ~]# mkdir -p /data/mirror                                                                                   #配置 Nginx 为镜像源服务
[root@tj-test-ansible ~]# chown -R nginx:nginx /data/mirror                                                                       #创建目录,并赋予权限
[root@tj-test-ansible ~]# vi /etc/nginx/conf.d/mirror.conf                                                                        #编辑配置文件
server {
    listen 80;
    server_name localhost;

    root /data/mirror;
    autoindex on;                                                                                                                #开启自动索引
    autoindex_exact_size off;                                                                                                    #显示大小,自动单位
    autoindex_localtime on;                                                                                                      #显示本地时间

    location / {
        try_files $uri $uri/ =404;
    }
}

[root@tj-test-ansible ~]# vi /etc/nginx/nginx.conf                                                                                #将默认文件这两行注释
#        listen       80 default_server;
#        listen       [::]:80 default_server;

[root@tj-test-ansible ~]# mkdir -p /data/mirror/testdir                                                                           #测试目录浏览功能
[root@tj-test-ansible ~]# echo "hello mirror" > /data/mirror/testdir/index.txt
[root@tj-test-ansible ~]# chown -R nginx:nginx /data/mirror
[root@tj-test-ansible ~]# nginx -t                                                                                                #重新加载配置
[root@tj-test-ansible ~]# systemctl reload nginx 

[root@tj-test-ansible ~]# mkdir -p /data/mirror/BC-linux21.10                                                                     #挂载它为一个目录(只读,不解压)
[root@tj-test-ansible ~]# mount -o loop /data/BCLinux-for-Euler-21.10-dvd-x86_64.iso /data/mirror/BC-linux21.10/                  #挂载镜像
[root@tj-test-ansible ~]# ls /data/mirror/BC-linux21.10/Packages/                                                                 #测试,确认挂载成功
[root@tj-test-ansible data]# cat >> /etc/fstab <<EOF                                                                              #写入永久挂载
> /data/BCLinux-for-Euler-21.10-dvd-x86_64.iso /data/mirror/BC-linux21.10 iso9660 loop,ro 0 0
> EOF


客户端测试
[root@oracle26 cloudman]# curl http://192.168.13.147/testdir/index.txt

客户端配置 YUM 源
[root@localhost yum.repos.d]# vi /etc/yum.repos.d/bc21-10.repo
[Bclinux21.10]
name=Internal Bclinux21.10
baseurl=http://192.168.13.147/BC-linux21.10/
enabled=1
gpgcheck=0

说明1:多个 ISO 镜像、多个版本分开挂载
/data/mirror/centos7
/data/mirror/centos8
/data/mirror/rhel7

说明2:如果想两台服务器分别搭建好"yum仓库" 进行高可用
方法1:DNS 轮询
1、两台服务器分别搭建好 Nginx + ISO 镜像挂载
192.168.13.147(主)
192.168.13.148(备)
2、内部 DNS 添加一个域名映射两个 IP
yum.internal.local  IN A 192.168.13.147
yum.internal.local  IN A 192.168.13.148
3、这样客户端访问:
baseurl=http://yum.internal.local/centos7/

方法2:Keepalived + VIP(虚拟IP高可用)
1、在两台服务器上安装 keepalived
2、设置一个 VIP(虚拟 IP 地址),比如:192.168.13.100
3、主机宕机时,VIP 自动漂移到备机
4、客户端只配置一个地址:
baseurl=http://192.168.13.100/centos7/
5、服务端镜像内容同步:使用 rsync
rsync -av --delete /data/mirror/ root@192.168.13.148:/data/mirror/
6、定时任务配置(主机):
crontab -e
# 每晚 2 点同步一次
0 2 * * * rsync -av --delete /data/mirror/ root@192.168.13.148:/data/mirror/

第一步:安装 Keepalived(两台都要装)
# yum install -y keepalived
第二步:配置主机(server1)
#填入以下内容(注意换成你网卡名称):
# vi /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface ens33                 # ← 这里改成你的实际网卡名
    virtual_router_id 51
    priority 100                   # ← 主机优先级高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keepalv1
    }
    virtual_ipaddress {
        192.168.13.100             # ← 虚拟IP(VIP)
    }
}
第三步:配置备机(server2)
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90                    # ← 比主机低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass keepalv1
    }
    virtual_ipaddress {
        192.168.13.100
    }
}
第四步:启动服务 & 设置开机自启(两台主机执行)
systemctl start keepalived
systemctl enable keepalived

验证 VIP 是否漂移到了主机:
ip a | grep 192.168.13.100

第五步:客户端配置 YUM 源(只写 VIP 即可)
[internal-centos7]
name=Internal CentOS 7 HA
baseurl=http://192.168.13.100/centos7/
enabled=1
gpgcheck=0

第六步:镜像文件同步(从主机 rsync 到备机)
在主机上设置定时任务:crontab -e
0 2 * * * rsync -av --delete /data/mirror/ root@192.168.13.148:/data/mirror/

  

posted @ 2025-04-21 17:08  LB_运维技术  阅读(211)  评论(0)    收藏  举报