首页
关于
推荐
搜索定位器
视频解码
电源计划
软件资源
博客友链
搜索
1
开源软件:m3u8.sqlite文件转视频工具
985 阅读
2
欢迎来到我的世界
753 阅读
3
iKuai+Openwrt实现虚拟WAN分流,再也不用担心旁路网关崩了影响全局网络
689 阅读
4
AI:ChatGPT,假如你是Java架构师
662 阅读
5
开源软件:Windows网络驱动器管理工具
629 阅读
资料整理
软件发布
世新家装
萌宠乐园
登录
搜索
标签搜索
Docker
CentOS7
开源软件
Jenkins
MySQL
JVM
世新家装
ZStack
Java
Spring
Shell脚本
docker-compose
iKuai
ESXi
Bean
BeanDefinition
小太阳鹦鹉
欢迎
C#
WPF
卖萌小老头
累计撰写
51
篇文章
累计收到
8
条评论
首页
栏目
资料整理
软件发布
世新家装
萌宠乐园
页面
关于
推荐
搜索定位器
视频解码
电源计划
软件资源
博客友链
搜索到
42
篇与
资料整理
的结果
2025-02-19
基于Keepalived的虚拟IP漂移
前景描述问题:我有两台DNS服务器,DNS5:10.11.27.5,DNS6:10.11.27.6。但是这两台DNS服务器在一个宿主机上(假设宿主机A:性能偏弱),前段时间把DNS5迁移到另一台主机(假设宿主机B:高性能)。但是遇到问题是宿主机B偶尔可能会停机,这个时候DNS5就不工作了。宿主机A是全年无休运行的,我就在想宿主机B不工作的时候宿主机A的DNS5能接替工作,但是当宿主机B恢复的时候自动切到宿主机B的DNS5。这样可以减少宿主机A的负载。方案:通过Keepalived实现虚拟IP(VIP),从而达到DNS5的服务器灾备切换功能。*提示:不一定是DNS场景,很多场景都适用。文章主要描述我的场景改造,并不是硬套。准备工作宿主机B的DNS5作为Master,宿主机A的DNS5作为Backup。修改宿主机B的DNS5 IP为 10.11.27.105,修改宿主机A的DNS5 IP为 10.11.27.106。(这个很简单,不用详细描述了)为两台DNS安装Keepalived,并启动服务。Keepalived的安装# CentOS yum install keepalived -y # Ubuntu apt-get install keepalived # Alpine Linux apk add keepalived配置Keepalived主节点配置编辑 /etc/keepalived/keepalived.conf 文件,示例如下:! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface ens192 # 根据实际网卡名称修改 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass DNS5 } virtual_ipaddress { 10.11.27.5 } }备份节点配置同样编辑 /etc/keepalived/keepalived.conf 文件,示例如下:! Configuration File for keepalived global_defs { router_id LVS_BACKUP } vrrp_instance VI_1 { state BACKUP interface eth0 # 根据实际网卡名称修改 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass DNS5 } virtual_ipaddress { 10.11.27.5 } }state:指定节点的初始状态,MASTER 表示主节点,BACKUP 表示备份节点。interface:指定使用的网络接口,需要根据实际情况修改。priority:优先级,主节点的优先级要高于备份节点,这样在正常情况下虚拟 IP 会绑定到主节点。advert_int:VRRP 通告间隔时间,单位为秒。authentication:认证信息,auth_type 为认证类型,auth_pass 为认证密码,主备节点的密码需要一致。virtual_ipaddress:指定虚拟 IP 地址。启动和设置开机自启Keepalived# CentOS systemctl start keeplived && systemctl enable keepalived # Ubuntu systemctl start keeplived && systemctl enable keepalived # Alpine Linux rc-service keepalived start && rc-update add keepalived验证配置ip addr show eth0 # 根据实际网卡名称修改 # 主节点返回如下: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:40:50:04 brd ff:ff:ff:ff:ff:ff inet 10.11.27.105/24 brd 10.11.27.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet 10.11.27.5/32 scope global ens192 valid_lft forever preferred_lft forever inet6 2409:8a1e:ab92:a8c1::8b2/128 scope global noprefixroute dynamic valid_lft 7069sec preferred_lft 7069sec inet6 fe80::20c:29ff:fe40:5004/64 scope link noprefixroute valid_lft forever preferred_lft forever # 备份节点返回如下: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:18:25:92:06:56 brd ff:ff:ff:ff:ff:ff inet 10.11.27.106/24 scope global eth0 valid_lft forever preferred_lft forever inet 10.11.27.5/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::218:25ff:fe92:656/64 scope link valid_lft forever preferred_lft forever模拟主节点故障,比如:Keepalived 或者 关闭 宿主机B的服务# 主节点 systemctl stop keepalived # 此时再次验证网卡绑定 ip addr show eth0 # 根据实际网卡名称修改 # 主节点返回 ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:40:50:04 brd ff:ff:ff:ff:ff:ff inet 10.11.27.105/24 brd 10.11.27.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet6 2409:8a1e:ab92:a8c1::8b2/128 scope global noprefixroute dynamic valid_lft 6734sec preferred_lft 6734sec inet6 fe80::20c:29ff:fe40:5004/64 scope link noprefixroute valid_lft forever preferred_lft forever # 备份节点返回 eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:18:25:92:06:56 brd ff:ff:ff:ff:ff:ff inet 10.11.27.106/24 scope global eth0 valid_lft forever preferred_lft forever inet 10.11.27.5/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::218:25ff:fe92:656/64 scope link valid_lft forever preferred_lft forever同时可以验证DNS5的工作情况,正常。注意事项确保 A 主机和 B 主机上的 DNS 配置(如named.conf等)保持一致,以保证在主备切换时 DNS 服务能够正常工作。同时,局域网内的客户端需要将 DNS 服务器地址配置为虚拟 IP10.11.27.5和 DNS6 的地址10.11.27.6。通过以上步骤,你就可以实现 B 主机的 DNS5 作为主服务器,A 主机的 DNS5 作为备用服务器,当 B 主机的 DNS5 停机时,A 主机的 DNS5 能接替工作。扩展提示服务停止,重启和日常操作其他服务一样。虚拟IP是否允许多个?允许。在virtual_ipaddress 下设置多个IP即可,当主节点故障时,所有的虚拟IP都会漂移到备份节点。也可以单独配置多个虚拟接口,使每个虚拟IP独立漂移。# 示例如下:这样就定义了 多个独立的虚拟机IP配置,备份节点也可以根据实际情况分开配置多台。 ! Configuration File for keepalived global_defs { router_id DNS5_MASTER } vrrp_instance VI_1 { state MASTER interface eth0 # 根据实际网卡名称修改 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.11.27.5 } } vrrp_instance VI_2 { state MASTER interface eth0 # 根据实际网卡名称修改 virtual_router_id 52 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.11.27.7 } } vrrp_instance VI_3 { state MASTER interface eth0 # 根据实际网卡名称修改 virtual_router_id 53 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.11.27.8 } } # 如果服务启动正常,会看到类似如下信息 systemctl status Keepalived # 返回 keepalived.service - Keepalive Daemon (LVS and VRRP) Loaded: loaded (/lib/systemd/system/keepalived.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-02-19 14:30:00 CST; 1min ago Process: 1234 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 1235 (keepalived) Tasks: 3 (limit: 4667) Memory: 1.2M CPU: 123ms CGroup: /system.slice/keepalived.service ├─1235 /usr/sbin/keepalived -D ├─1236 /usr/sbin/keepalived -D └─1237 /usr/sbin/keepalived -D剩下的自己研究扩展吧。
2025年02月19日
162 阅读
0 评论
0 点赞
2024-10-09
scp无密码登录远程服务器
为了避免使用 scp 或其他 SSH 命令时每次都输入密码,你可以设置 SSH 密钥对来进行无密码登录。要实现使用 scp 进行无密码登录远程服务器,你需要确保已经正确配置了 SSH 公钥认证。以下是一些详细的步骤来帮助你完成这一配置:本地服务器生成SSH密钥对(如果尚未生成)ssh-keygen -t rsa -b 4096此命令会在默认位置 ~/.ssh/ 下生成 id_rsa 和 id_rsa.pub 文件。如果希望指定位置或文件名,可以在命令后加上 -f 参数。将公钥复制到远程服务器假设远程服务器为10.11.27.239使用 ssh-copy-id 工具可以很方便地将公钥复制到远程服务器:ssh-copy-id root@10.11.27.239如果你的系统没有安装 ssh-copy-id,你可以手动执行以下步骤:打开本地服务器上的 ~/.ssh/id_rsa.pub 文件。复制里面的内容。登录到远程服务器:ssh root@192.168.215.239。创建或进入 ~/.ssh 目录:mkdir -p ~/.ssh。设置正确的权限:chmod 700 ~/.ssh。创建或编辑 ~/.ssh/authorized_keys 文件:touch ~/.ssh/authorized_keys 或者 vi ~/.ssh/authorized_keys。将刚才复制的公钥粘贴到 authorized_keys 文件内,每行一个公钥。设置正确的文件权限:chmod 600 ~/.ssh/authorized_keys。测试无密码登录退出远程会话,然后尝试无密码登录:ssh root@10.11.27.239如果一切正常,你应该可以直接登录,而不需输入密码。使用scp无密码传输文件现在可以使用scp讲文件从本地传输到远程服务器,无需输入密码scp /local/file root@10.11.27.239:/remote/directory确认无密码登录配置为了确认配置是否正确,你可以检查远程服务器上的 ~/.ssh/authorized_keys 文件是否包含你的公钥,并且确保该文件的权限设置正确。 安全注意事项 不要在 .ssh/authorized_keys 文件中添加注释,因为它们可能会导致SSH无法正确解析该文件。不要在公共网络上传输未加密的SSH密钥,以防止被截获。如果不再信任某个密钥,记得从 authorized_keys 文件中删除相应的条目。通过上述步骤,你应该能够实现使用 scp 无密码登录并传输文件到远程服务器。如果遇到任何问题,请检查SSH配置文件 /etc/ssh/sshd_config 并确保允许公钥认证。
2024年10月09日
112 阅读
0 评论
0 点赞
2024-08-08
esxi 磁盘信息检查
esxi 磁盘信息检查# 磁盘列表 esxcli storage core device list # 磁盘信息 esxcli storage core device smart get -d {device}注意:外部 FC/iSCSI LUN 或 RAID 控制器中的虚拟磁盘可能不报告 S.M.A.R.T. 状态脚本备注# disk_list esxcli storage core device list > /disk_list.txt # disk_check disk_check_log="/var/log/disk_check_log_$(date +\%Y-\%m-\%d).log" echo "disk_check_$(date +\%Y-\%m-\%d)" > "$disk_check_log" for device in $(esxcli storage core device list | grep '^t10' | awk '{print $1}'); do echo "$device" >> "$disk_check_log" esxcli storage core device smart get -d "$device" >> "$disk_check_log" echo "-----------------------------------------------------" >> "$disk_check_log" done磁盘列表备注t10.NVMe____J.ZAO_5_SERIES_2TB_SSD__________________1B02004003275A3At10.NVMe____Fanxiang_S500PRO_2TB____________________0100000000000000t10.ATA_____MG08ACA16TE__________00MX141_00MX141LEN_____________TDWF7XMWt10.ATA_____Hitachi_HTS545050A7E380_______________________TE851349HM1H5R当前磁盘状况t10.NVMe____J.ZAO_5_SERIES_2TB_SSD__________________1B02004003275A3A参数值阈值最坏值健康状态正常N/AN/A介质磨损指示器N/AN/AN/A写入错误计数N/AN/AN/A读取错误计数N/AN/AN/A通电时间4615N/AN/A电源循环次数16N/AN/A重分配扇区计数090N/A原始读取错误率N/AN/AN/A驱动器温度3890N/A驱动器额定最大温度N/AN/AN/A写入扇区总计数N/AN/AN/A读取扇区总计数N/AN/AN/A初始坏块计数N/AN/AN/At10.NVMe____Fanxiang_S500PRO_2TB____________________0100000000000000参数值阈值最坏值健康状态正常N/AN/A介质磨损指示器N/AN/AN/A写入错误计数N/AN/AN/A读取错误计数N/AN/AN/A通电时间9928N/AN/A电源循环次数44N/AN/A重分配扇区计数099N/A原始读取错误率N/AN/AN/A驱动器温度4290N/A驱动器额定最大温度N/AN/AN/A写入扇区总计数N/AN/AN/A读取扇区总计数N/AN/AN/A初始坏块计数N/AN/AN/At10.ATA_____MG08ACA16TE__________00MX141_00MX141LEN_____________TDWF7XMW参数值阈值最坏值健康状态正常N/AN/A介质磨损指示器N/AN/AN/A写入错误计数N/AN/AN/A读取错误计数10050100通电时间47047电源循环次数1000100重分配扇区计数10010100原始读取错误率10050100驱动器温度1000100驱动器额定最大温度614553写入扇区总计数N/AN/AN/A读取扇区总计数N/AN/AN/A初始坏块计数N/AN/AN/At10.ATA_____Hitachi_HTS545050A7E380_______________________TE851349HM1H5R参数值阈值最坏值健康状态正常N/AN/A介质磨损指示器N/AN/AN/A写入错误计数N/AN/AN/A读取错误计数062N/A通电时间22022电源循环次数99099重分配扇区计数05N/A原始读取错误率062N/A驱动器温度350N/A驱动器额定最大温度N/AN/AN/A写入扇区总计数N/AN/AN/A读取扇区总计数N/AN/AN/A初始坏块计数N/AN/AN/A
2024年08月08日
167 阅读
0 评论
0 点赞
2024-08-08
防火墙端口操作备注
防火墙端口操作备注查看开放端口列表firewall-cmd --zone=public --list-ports开放端口firewall-cmd --zone=public --add-port=8888/tcp --permanent关闭端口firewall-cmd --zone=public --remove-port=8888/tcp --permanent关闭防火墙systemctl stop firewalld禁用防火墙systemctl disable firewalld查看监听端口netstat -lnpt # yum install -y net-tools检查端口被哪个进程占用netstat -lnpt | grep 8888查看进程详细信息ps 8888终止进程kill -9 pid
2024年08月08日
143 阅读
0 评论
0 点赞
2024-05-22
systemd服务自定义启动
systemd服务自定义启动Systemd 是 CentOS 7 中用于初始化系统的系统和服务管理器,可以让你将脚本设置为服务来管理。脚本内容:#!/bin/bash # Loading System Environment Variables source /etc/profile # 以日期时间为后缀,每次运行都生成新的日志文件 LOG_FILE="magic_api_$(date '+%Y%m%d_%H%M%S').log" # magic Jar package path1=/root # Log path logpath=/root/magic-log java -jar $path1/Magic_API.jar >> "$logpath/$LOG_FILE" 2>&1 # 获取后台运行的最后一个进程的 PID PID=$! echo "启动进程 PID: $PID" # 给 Java 应用一点时间启动 sleep 10 # 检查进程是否还在运行 if kill -0 $PID 2>/dev/null; then echo "启动成功" else echo "启动失败,查看日志文件 $logpath/$LOG_FILE" fi服务文件首先,需要创建一个 systemd 服务文件。通常这个文件应该放在 /etc/systemd/system/ 目录下。例如,可以创建一个名为 your-service.service 的文件:sudo vi /etc/systemd/system/your-service.service在该文件中添加如下内容:[Unit] Description=My Custom Startup Script [Service] Type=simple ExecStart=/path/to/your/script.sh Restart=on-abort [Install] WantedBy=multi-user.target创建systemd服务创建magicapi.service文件,内容如下:[Unit] Description=MagicAPI Service [Service] Type=simple ExecStart=/root/start_magicserver.sh Restart=on-abort [Install] WantedBy=multi-user.target使用systemd服务在正式自己创建的服务器之前,需要执行命令将配置文件加载到systemd中。systemctl daemon-reload然后自己编写的服务就可以像系统其他的服务一样使用start、stop、status、restart等服务。systemctl start magicapi.service systemctl stop magicapi.service systemctl status magicapi.service systemctl restart magicapi.service也可以通过enable或disable将服务开机启动或开机禁用。systemctl enable magicapi.service systemctl disable magicapi.service关键内容解释[Unit] 部分[Unit]: 这一行标记着单元配置文件的开始。在 systemd 中,单元(unit)是对系统资源的一个抽象,用于管理服务、挂载点、设备等。Description=Start MagicAPI Service: 这行提供了对这个服务单元的简短描述。这里描述的是 "Start MagicAPI Service",这说明该服务的目的是启动 MagicAPI 服务。这个描述会在系统管理工具中显示,帮助用户识别服务的功能。[Service] 部分[Service]: 这一行标记着服务类型的配置部分的开始。这里定义的是与服务特定行为相关的配置。Type=simple: 这行指定了服务的启动类型为 simple。这是 systemd 服务类型的默认值,意味着 systemd 认为该服务将立即启动并且一直运行。ExecStart 指定的程序被认为是服务的主进程,如果此程序退出,服务被认为已停止。ExecStart=/root/start_magicserver.sh: 这行定义了启动服务时执行的命令或脚本。此例中,当服务启动时,系统将运行位于 /root/start_magicserver.sh 的脚本。这个脚本应该包含启动 MagicAPI 服务所需的所有命令。Restart=on-abort: 这行指定了服务重启的策略。on-abort 表示只有在服务因异常终止(比如进程被信号杀死)时才会重新启动。这有助于确保在非正常终止的情况下服务能自动尝试恢复。[Install] 部分[Install]: 这一行标记着与服务安装相关的指令的开始。这部分主要定义了当通过 systemctl enable 命令使服务自启动时应该怎么做。WantedBy=multi-user.target: 这行指定了服务安装时应该被哪个目标(target)所需要。multi-user.target 是一个系统运行级别,类似于传统的运行级别 3,意味着在多用户文本模式下运行。在这里,WantedBy=multi-user.target 意味着当系统达到多用户目标状态时,这个服务应该被启动。总的来说,这个 systemd 服务单元文件配置了一个名为 "MagicAPI" 的服务,这个服务在系统启动到多用户模式时自动启动,并且在由于异常原因导致服务终止时自动重启。它通过运行一个位于 /root/start_magicserver.sh 的脚本来启动 MagicAPI 服务。前端程序示例Vue前端编写的程序如果希望通过systemd服务来管理的话,还需要指定下前端程序的工作空间,否则访问的时候会出现“Cannot GET /”启动Vue的shell脚本编写如下:# cat /root/vue_operation.sh #!/bin/bash # 前端程序启动脚本 path="/opt/software/Vue" /opt/software/node-v14.17.4-linux-x64/bin/node $path/server.js编写systemd服务# cat /etc/systemd/system/vue.service [Unit] Description=Vue Frontend Server After=network.target [Service] Type=simple WorkingDirectory=/opt/software/Vue/ ExecStart=/bin/bash /root/vue_operation.sh Restart=on-abort [Install] WantedBy=multi-user.target关键内容解释[Unit] 部分[Unit] Description=Vue Frontend Server After=network.targetDescription=Vue Frontend Server:这一行定义了服务的描述,说明了这个服务是用来运行 Vue 前端服务器的。After=network.target:这一行指定服务应该在网络服务 (network.target) 启动后才启动。这确保了网络已经准备就绪,以便服务能够正常工作。[Service] 部分[Service] Type=simple WorkingDirectory=/opt/software/Vue/ ExecStart=/bin/bash /root/vue_operation.sh Restart=on-abortType=simple:指定服务以简单的方式运行。这意味着 systemd 会认为启动服务后,该服务的主进程直接由 ExecStart 指定的命令启动,并且不会在后台生成其他额外的子进程。WorkingDirectory=/opt/software/Vue/:指定服务的工作目录是 /opt/software/Vue/。这是服务启动后的工作路径,也就是 vue_operation.sh 脚本将在这个目录下执行。ExecStart=/bin/bash /root/vue_operation.sh:这一行定义了服务启动时要执行的命令。具体来说,它调用了 /bin/bash 解释器来执行 /root/vue_operation.sh 脚本。这意味着在启动服务时,将会执行这个脚本来启动 Vue 前端服务器。Restart=on-abort:指定服务在异常终止时(非正常退出)应该自动重启。on-abort 选项告诉 systemd,在服务由于异常情况(如程序崩溃或收到不可恢复的信号)而终止时,应该自动重新启动该服务,以确保服务的可用性。[Install] 部分[Install] WantedBy=multi-user.targetWantedBy=multi-user.target:这一行指定了当系统运行级别达到 multi-user.target 时,应该启用这个服务。multi-user.target 是系统启动时的一个目标,表示系统已经进入了多用户模式,可以运行多个用户服务。@alexremo
2024年05月22日
123 阅读
0 评论
0 点赞
iKuai+Openwrt实现虚拟WAN分流,再也不用担心旁路网关崩了影响全局网络
先上一张网络结构图。实现此架构需要具备如下要求:物理机最少两个物理网口懂网络知识,否则可能看不懂哦实现此架构两种方案:使用类似J1900主机,直接安装iKuai(64位哦,32位不支持虚拟机)使用PVE或ESXi安装iKuai和Openwrt方案一:iKuai虚拟机iKuai虚拟机方案,因为vnet是没有实际连接的虚拟端口。所以是红色的WAN2使用vnet作为关联,那么创建Openwrt虚拟机的时候也能选择到WAN2。iKuai就能和Openwrt建立关系。创建虚拟机的时候一定要注意网卡,Openwrt内的网卡绑定和调整我就不详细讲了。方案二:虚拟化平台虚拟机此方案的实现和iKuai的虚拟机类似,只是WAN2不在依赖vnet接口,而是通过虚拟化平台分配的iKuai和Openwrt公用的一个端口,作为Openwrt的lan和iKuai的WAN2。具体操作不详细赘述,以ESXi的网络截图说明:ESXi上允许创建不绑定上行链路的虚拟交换机,同时基于虚拟交换机就可以创建端口组。创建好端口组,就可以连接iKuai和Openwrt,完成和iKuai虚拟机一样的方式搭建WAN2。不同的是端口检查iKuai的WAN2连接了Openwrt,所以端口不是红色的。分流规则iKuai的规则优先级:静态路由>域名分流>端口分流>协议分流>多线负载>默认网关我目前使用比较多的是协议分流(直接指定哪些协议走哪个端口出去)、域名分流(指定域名从指定端口出去)优缺点优点:当WAN2打包服务停机或者网络服务异常时,不影响不分流的访问。缺点:相比旁路网关,略微复杂。多年前已经在iKuai论坛发布过此方案了,但是还想在自己的笔记中留下自己的方案。感谢浏览!!!* 特别申明只做技术交流,不做非法生意。如有非法活动和本人无关,不要因教程扯上我。
2024年05月07日
689 阅读
1 评论
0 点赞
1
2
...
7