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/

浙公网安备 33010602011771号