我在使用 wg-easy VPN 服务时遇到问题,因为 VPS 容器似乎经常出现故障。我设置了一个 cron 作业每 2 小时重新启动一次,但似乎没有多大帮助。
我也有兴趣在自动化帐户上使用 Powershell 脚本设置自动重新启动,但我不确定我的 Runbook 脚本是否正确。这是我写的脚本:
$resourceGroupName = "foodshare-resource-group"
$vmNames = @(
"foodshare-virtual-machine",
"monitoring_virtual_machine",
"web-virtual-machine"
)
$trigger = New-JobTrigger -Once -At (Get-Date).AddMinutes(2) -RepetitionInterval (New-TimeSpan -Hours 2) -RepetitionDuration ([TimeSpan]::MaxValue)
Register-ScheduledJob -ScriptBlock {
Connect-AzAccount -Identity
foreach ($vmName in $vmNames) {
Restart-AzVM -ResourceGroupName $resourceGroupName -Name $vmName
}
} -Trigger $trigger
如果您能帮助解决 wg-easy VPN 服务问题以及验证我的 Powershell 脚本是否正确,我将不胜感激。
谢谢你。
在自动化帐户上使用 PowerShell 脚本设置自动重启,但我不确定我的 Runbook 脚本是否正确:
您的脚本对我来说看起来不错,下面是该脚本的即兴版本,以使其高效工作。
$resourceGroupName = "xxx"
$vmName = "latestj"
$trigger = New-JobTrigger -Once -At (Get-Date).AddMinutes(2) -RepetitionInterval (New-TimeSpan -Hours 2) -RepetitionDuration ([TimeSpan]::MaxValue)
Register-ScheduledJob -ScriptBlock {
param (
[string]$resourceGroupName,
[string[]]$vmName
)
Connect-AzAccount -Identity
Restart-AzVM -ResourceGroupName $resourceGroupName -Name $vmName
} -Trigger $trigger -ArgumentList $resourceGroupName, $vmName
您还可以使用 try catch 块来检查和处理错误。
$resourceGroupName = "xxx"
$vmNames = @(
xxxx
)
$trigger = New-JobTrigger -Once -At (Get-Date).AddMinutes(2) -RepetitionInterval (New-TimeSpan -Hours 2) -RepetitionDuration ([TimeSpan]::MaxValue)
Register-ScheduledJob -ScriptBlock {
Connect-AzAccount -Identity
foreach ($vmName in $vmNames) {
$vmdetails = Get-AzVM -ResourceGroupName $resourceGroupName -Name $vmName -ErrorAction SilentlyContinue
if ($vmdetails) {
$Status = $vmdetails.ProvisioningState
if ($Status -eq "Succeeded") {
Restart-AzVM -ResourceGroupName $resourceGroupName -Name $vmName
Write-Host "Restarted"
} else {
Write-Host "Not in a running state"
}
} else {
Write-Host "VM $vmName not found"
}
}
} -Trigger $trigger
来到了,
wg-easy VPN 服务问题:
虽然使用 cron 作业每 2 小时重新启动一次可以确保服务保持在线状态,但这并不是最可行的方法。它会中断连接并带来数据丢失的风险。