Google cloud platform 使用启动脚本时,首次重新启动后无法访问VM
我在GCP的CentOS7 VM中使用以下启动脚本。首次重新启动后,可以访问url。但是,如果我重新启动我的机器或停止然后启动机器,机器将无法访问,url也无法工作。我想这可能是由于selinux,所以我添加了代码来禁用selinux,但结果仍然相同。我尝试通过创建多个新VM来实现这一点,但似乎有一些我无法理解的东西。当我在VM上手动执行此脚本并尝试多次重新启动时,我没有遇到任何问题Google cloud platform 使用启动脚本时,首次重新启动后无法访问VM,google-cloud-platform,Google Cloud Platform,我在GCP的CentOS7 VM中使用以下启动脚本。首次重新启动后,可以访问url。但是,如果我重新启动我的机器或停止然后启动机器,机器将无法访问,url也无法工作。我想这可能是由于selinux,所以我添加了代码来禁用selinux,但结果仍然相同。我尝试通过创建多个新VM来实现这一点,但似乎有一些我无法理解的东西。当我在VM上手动执行此脚本并尝试多次重新启动时,我没有遇到任何问题 #!/bin/bash -xe # introducing sleep so network interfac
#!/bin/bash -xe
# introducing sleep so network interfaces and routes can get ready before fetching software
sleep 10
if rpm -q --quiet httpd ; then
echo "installed"
else
yum update -y
yum install -y httpd php php-common
setenforce 0
sed -i.bak -e 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
cat > /var/www/html/index.php <<'EOF'
<?php
function metadata_value($value) {
$opts = array(
"http" => array(
"method" => "GET",
"header" => "Metadata-Flavor: Google"
)
);
$context = stream_context_create($opts);
$content = file_get_contents("http://metadata/computeMetadata/v1/$value", false, $context);
return $content;
}
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == "http") {
$redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $redirect);
exit();
}
?>
<!doctype html>
<html>
<head>
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/css/materialize.min.css">
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/js/materialize.min.js"></script>
<title>Frontend Web Server</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col s2"> </div>
<div class="col s8">
<img src="/assets/gcp-logo.svg"/>
<div class="card blue">
<div class="card-content white-text">
<div class="card-title">Backend that serviced this request</div>
</div>
<div class="card-content white">
<table class="bordered">
<tbody>
<tr>
<td>Name</td>
<td><?php printf(metadata_value("instance/name")) ?></td>
</tr>
<tr>
<td>ID</td>
<td><?php printf(metadata_value("instance/id")) ?></td>
</tr>
<tr>
<td>Hostname</td>
<td><?php printf(metadata_value("instance/hostname")) ?></td>
</tr>
<tr>
<td>Zone</td>
<td><?php printf(metadata_value("instance/zone")) ?></td>
</tr>
<tr>
<td>Machine Type</td>
<td><?php printf(metadata_value("instance/machine-type")) ?></td>
</tr>
<tr>
<td>Project</td>
<td><?php printf(metadata_value("project/project-id")) ?></td>
</tr>
<tr>
<td>Internal IP</td>
<td><?php printf(metadata_value("instance/network-interfaces/0/ip")) ?></td>
</tr>
<tr>
<td>External IP</td>
<td><?php printf(metadata_value("instance/network-interfaces/0/access-configs/0/external-ip")) ?></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card blue">
<div class="card-content white-text">
<div class="card-title">Proxy that handled this request</div>
</div>
<div class="card-content white">
<table class="bordered">
<tbody>
<tr>
<td>Address</td>
<td><?php printf($_SERVER["HTTP_HOST"]); ?></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col s2"> </div>
</div>
</div>
</html>
EOF
mkdir -p /var/www/html/group1 && cp /var/www/html/index.php /var/www/html/group1/index.php
systemctl enable httpd
systemctl restart httpd
fi
有没有人面临这样的问题?请求帮助我找出重启后无法访问VM的原因
谢谢这是一个众所周知的问题,谷歌工程师也意识到了这一点: 我们目前遇到谷歌计算引擎的问题 运行RHEL和CentOS 7和8的实例。关于这个问题的更多细节 可在以下文章和Bug中找到:
- (RHEL 8)
- (RHEL 7)
- “X64异常类型-0D(#GP-一般保护)CPU Apic ID”
- “FXSAVE_状态”
- 或“基于IP查找图像”
rpm-q shim-x64
受影响的垫片版本:CentOS 7:shim-x64-15-7.el7_9.x86_64 CentOS 8:shim-x64-15-13.el8.x86_64 RHEL 7:shim-x64-15-7.el7_8.x86_64 RHEL 8:shim-x64-15-14.el8_2.x86_64
解决方法:不要更新或重新启动运行RHEL或CentOS 7的实例
八,。如果您使用的是受影响的垫片版本,请运行yum降级垫片\*grub2\*mokutil
以降级到正确的版本。这
命令在CentOS 8上可能不起作用。如果您已经重新启动,则
将需要将磁盘连接到一个工作实例(尚未
使用有问题的垫片(二进制)进行更新,并复制到工作区
将二进制文件填充到已装入磁盘上的相关EFI目录。对于
RHEL,这里是/boot/efi/efi/redhat/shimx64.efi
。对于CentOS来说,这是
/boot/efi/efi/centos/shimx64.efi
请按照redhat线程进行实时更新。我们将更新
一旦我们这边的问题解决了
我建议你加入并关注谷歌问题跟踪器
此外,您可以在上查看此问题的状态。这似乎只会影响使用UEFI引导的系统 正如Serhii Rohoza已经明确提到的,我通过阅读第页解决了这个问题 最好完整地阅读那一页。它还说明了在问题仍未解决的情况下,在执行下一次更新时如何防止同样的情况发生。 做好准备您可能必须更改/etc/resolv.conf,并且在使用rescue引导映像时可能必须手动设置默认网关,例如:ip路由通过192.168.1.1 dev eno1添加默认值 我还必须更改/etc/sysconfig/networkscripts/ifcfg-。。。。。。从BOOTPROTO=static到BOOTPROTO=dhcp以及其他一些设置,如DNS=“8.8.8.8”(谷歌名称服务器)。
修复后,将所有内容设置回原始状态。RHEL7的解决方案 未重新启动的RHEL7实例 执行以下命令降级罪犯软件包,然后重新启动 yum降级垫片*grub2*mokutil 重新启动后未启动的服务器:
lsblk
名称主要:最小RM尺寸RO类型安装点
sda 8:0 20G 0磁盘
├─sda1 8:1 0 200M 0部件/启动/efi
└─sda2 8:2 0 19.8G 0部分/
sdb 8:16 0 50G 0磁盘
├─sdb1 8:17 0 200米部分这对我真的很有帮助,谢谢。4.装载引导卷Mount/dev/sdd1/mnt=>Mount/dev/sdb1/mnt
serialport: Connected to mytower.us-central1-a.centos7 port 1 (session ID: 405c4d17b926f0906f45a53784d4abd379d6480d, active connections: 1).
DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
GS - 0000000000000030, SS - 0000000000000030
CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 00000000BF401000
CR4 - 0000000000000668, CR8 - 0000000000000000
DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
DR3 - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400
GDTR - 00000000BF3EEA98 0000000000000047, LDTR - 0000000000000000
IDTR - 00000000BEE1F018 0000000000000FFF, TR - 0000000000000000
FXSAVE_STATE - 00000000BFF39AB0
!!!! Find image based on IP(0xBF2E6D5C) /build/work/af60adde42b1d1ad5be2a01e4924bb905248/google3/blaze-out/k8-opt/genfiles/third_party/edk2/ovmf_x64_csm_debug_workspace_dir/ovmf_x64_csm_debug_edk2_files_dir/Build/OvmfX64/DEBUG_CLANG38/X64/OvmfPkg/8254TimerDxe/8254Timer/DEBUG/Timer.dll (ImageBase=00000000BF2E5000, EntryPoint=00000000BF2E6AB5) !!!!
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
└─sda2 8:2 0 19.8G 0 part /
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 200M 0 part <~~~~~~~~
└─sdb2 8:18 0 49.8G 0 part