无锡市政建设集团网站,长沙网站推广公司哪家好,广州品牌营销服务,巢湖网站建设基本信息:
VIP: 10.50.1.170
node1: 10.50.1.171
node2: 10.50.1.172
实现原理:
1. 脚本每2s 运行一次(注册为windows 服务, 开机同步启动)
2. 监听VIP 是否可用, 可用则跳过;
3. 如果不可用 则 判断本机 Nginx 服务是否可用
3.1 可用则执行绑定动作, 将VIP绑定到本机 …基本信息:
VIP: 10.50.1.170
node1: 10.50.1.171
node2: 10.50.1.172
实现原理:
1. 脚本每2s 运行一次(注册为windows 服务, 开机同步启动)
2. 监听VIP 是否可用, 可用则跳过;
3. 如果不可用 则 判断本机 Nginx 服务是否可用
3.1 可用则执行绑定动作, 将VIP绑定到本机
3.2 不可用则跳过
脚本:
while ($true) {# 1. 判断 http://10.50.1.170/health 返回是否是OKWrite-Host Checking Nginx health status via http://10.50.1.170/health...try {$response Invoke-WebRequest -Uri http://10.50.1.170/health -UseBasicParsing -Method HEAD -TimeoutSec 2 -ErrorAction Stop$status if ($response.StatusCode -eq 200) { OK } else { NOT OK }Write-Host Nginx health status: $status}catch {$status ERRORWrite-Host Error accessing Nginx health status: $($_.Exception.Message)}# 2. 如果第1步返回的OK 则不做任何处理if ($status -eq OK) {Write-Host Nginx health status is OK, no operation needed.}else {# 3. 如果第一步返回的不是OK, 则执行解绑VIP的动作Write-Host Nginx health status is not OK, starting to remove VIP binding...$vip 10.50.1.170$interfaceName Ethernet0$interfaceInfo Get-NetIPAddress -InterfaceAlias $interfaceName -ErrorAction SilentlyContinue$vipExists $interfaceInfo | Where-Object { $_.IPAddress -eq $vip }if ($vipExists) {try {Remove-NetIPAddress -IPAddress $vip -InterfaceAlias $interfaceName -ErrorAction Stop -Confirm:$falseWrite-Host Removed VIP $vip binding from $interfaceName interface.}catch {Write-Host Failed to remove VIP $vip binding. Error: $($_.Exception.Message)}}else {Write-Host VIP $vip is not bound on $interfaceName interface.}# 4. 然后判断本机Nginx (jg-nginx) 是否可用Write-Host Checking if local Nginx (jg-nginx) is available...$localNginxProcess Get-Process -Name jg-nginx -ErrorAction SilentlyContinueif ($localNginxProcess) {Write-Host Local Nginx (jg-nginx) is available.# 5. 如果可用则执行绑定VIP的动作Write-Host Starting to bind VIP $vip to $interfaceName interface...try {New-NetIPAddress -IPAddress $vip -PrefixLength 32 -InterfaceAlias $interfaceName -ErrorAction Stop -Confirm:$falseWrite-Host VIP $vip bound to $interfaceName interface.}catch {Write-Host Failed to bind VIP $vip. Error: $($_.Exception.Message)}}else {Write-Host Local Nginx (jg-nginx) is not available, skipping VIP binding.}}# 等待2秒后再次循环执行Start-Sleep -Seconds 2
}