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/