谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

作者:陈满

一、引言

在我们日常维护运行在 Google Compute Engine(虚拟主机)的应用时,都需要通过Chrome 浏览器或是第三方Xshell 等远程连接工具,连接虚拟机进行服务管理,通常有时会发生,昨天还连接正常的VM,今天就无法正常连接了,今天我们就简单来介绍几种连接问题的排查与解决方法。

二、技术简介

虚拟主机无法正常SSH 登录,服务器远程连接异常,我们可以通过“更换换发动机”的方式重新登录虚拟机,同时也可以通过Google Cloud 提供的类似本地IDC中的串口(console)登录主机,查看VM 日志,来进行维护管理无法连接的虚拟机。

三、实现目的

解决compute Engine 无法正常连接管理的问题,减少失联控制时间。

四、准备工作

首先我们讨论主要引起 Compute Engine CentOS 7系统无法正常SSH 登录的情况

  1. VM 防火墙规则未正常启用SSH服务
  2. GCP 防火墙规则未正常放行SSH 端口
  3. 系统启动盘磁盘损坏或启动磁盘空间已满
  4. 系统文件打开数修改后无法正常SSH

注:由于排查过程中,某些排查过程中需要对虚拟机进行重启,因此, 如果虚拟机挂载了 local SSD,会导Local SSD(易失存储) 中的数据丢失,请注意。下面的解决方法,更多适用于未挂载SSD的虚拟机无法连接的问题。

五、实现过程

1、VM防火墙未正常放行,或是通过Xshell 连接工具进行防火墙配置时,禁用了所有INPUT 流量,导致所有的流量被丢弃。

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

1.1 解决办法:

在GCP上,启用串口登录,添加特权用户,然后修改VM 防火墙策略。

1.2 实现过程

  • 1.2.1 在GCP 控制台,启用VM 的串口登录方式,编辑【metadata】,添加如下Key-Value
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

  • 1.2.2 通过VM start-script 自启脚本,添加用户,然后通过串口登录VM
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

  • 1.2.3 在自定义元数据【custom medata】,*添加新的*项,如上所示:
在密钥字段中,输入 startup-script。在值字段中,输入以下内容:#! /bin/bashadduser user1echo USERNAME:PASSWORD | chpasswdusermod -aG google-sudoers USERNAMEUSERNAME:您要添加的用户名PASSWORD:用户名的密码
  • 1.2.4 点击【保存】,然后通过reset【重置】实现VM 重启,
  • 1.2.5 连接【串行端口】进行VM 防火墙配置:
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

## 清楚所有防火墙策略# iptables -F ### 保存防火墙规则# iptables-save

  • 1.2.6 测试SSH 远程连接:
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

  • 1.2.7 测试网络连通性:
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

2、GCP 防火墙规则未正常放行SSH 端口

这种情况是由于GCP 的Global 防火墙导致SSH 请求流量无法正常进入到GCP 网络中导致请求被拒绝,如下错误提示:

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

解决办法:登录GCP的控制台添加对应端口的防火墙策略:

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

3、系统启动盘磁盘损坏或启动磁盘空间已满

如果虚拟机启动磁盘已满,则您可能无法访问虚拟机。此情况可能很难进行问题排查,因为虚拟机连接问题是由于启动磁盘已满导致时,这种情况并不总是显而易见。

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

  • 确认虚拟机的 SSH 故障是否因启动磁盘已满导致,在控制台中找到VM 实例,点击【VM 名称】,然后找到串口:
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

# 通过gcloud 查看串口日志输出$ gcloud compute instances tail-serial-port-output VM_NAME

在串口日志中查找No space left on device ,如下所示,意味着启动盘因为日志数据的持续写入或不断产生数据文件,已经将启动盘空间占用满,导致无法正常的SSH 登录

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

如果启动磁盘已满,则生成的输出将包含消息 No space left on device
解决办法:

3.1 创建磁盘的快照,用于将已满的磁盘挂载到其他的VM上进行扩容

3.2 停止虚拟机,并增加磁盘容量

  • 停止虚拟机
gcloud compute instances stop VM_NAME  --zone=
VM_NAME:有问题的VM 实例名称
  • 增加启动盘容量:重新调整虚拟机启动磁盘的大小后,大多数虚拟机会自动调整根文件系统的大小并重启虚拟机。调整前的磁盘容量:
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

gcloud compute disks resize BOOT_DISK_NAME --size DISK_SIZEBOOT_DISK_NAME:虚拟机的启动磁盘的名称DISK_SIZE:启动磁盘新的更大大小(以 GB 为单位)

3.3 重新启动虚拟机

gcloud compute instances start VM_NAME

3.4 尝试通过 SSH 连接到虚拟机

  • 可以正常连接,虚拟机自动调整跟文件系统,可以通过串口日志查看,如下所示:
谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

3.5 登录虚拟机后 通过 df -Th 来检查是否有可用的磁盘空间,即自动调整文件系统大小成功。

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

3.6 仍然无法访问虚拟机,文件系统问题。

该虚拟机不支持自动调整根文件系统大小,需要通过上面的快照重新创建新的更大容量的启动盘,然后重新挂载,

a. 为已满的启动盘创建快照:

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

b. 通过快照创建新的启动盘增加磁盘容量,通过创建好的快照来创建更大容量已满启动盘的副本,然后将创建的磁盘挂载到虚拟机上,

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

c. 停止虚拟机,移除已满的启动盘,挂载增加容量后新的启动盘

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

d. 重启虚拟机,登录虚拟机通过 df -Th 检查扩容后的容量。

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

补充 通过gcloud troubleshot 进行预检测实现初步的TroubleShot:

$ gcloud beta compute ssh cockpit-1 --zone=us-central1-a --troubleshoot                                                      Starting ssh troubleshooting for instance <https://compute.googleapis.com/compute/beta/projects/yunion-test-286209/zones/us-central1-a/instances/cockpit-1> in zone us-central1-a'Start time: 2021-12-23 10:10:43.350588---- Checking network connectivity ----The troubleshooting tool needs permission to check the VM's network connectivity.Is it OK to run this test? (Y/n)?  yEnabling service [networkmanagement.googleapis.com] on project [yunion-test-286209]...Your source IP address is 34.80.131.230Network Connectivity Test Result: REACHABLEEndpointInfo <EndpointInfo destinationIp: '10.1.2.10' destinationNetworkUri: 'projects/yunion-test-286209/global/networks/default' destinationPort: 22 protocol: 'TCP' sourceIp: '34.80.131.230' sourcePort: 51103>Initial state: packet originating from Internet.START_FROM_INTERNETForwarding state: arriving at a Compute Engine instance.ARRIVE_AT_INSTANCEConfig checking state: verify INGRESS firewall rule.APPLY_INGRESS_FIREWALL_RULEFinal state: packet DELIVERed to instance.DELIVER---- Checking user permissions ----User permissions: 0 issue(s) found.---- Checking VPC settings ----VPC settings: 0 issue(s) found.---- Checking VM status ----VM status: 0 issue(s) found.---- Checking VM boot status ----VM boot: 0 issue(s) found.

六、常见问题

谷歌浏览器与谷歌服务器通信时出现问题(与谷歌服务器通信时出现问题怎么解决)

参考:

[1] SSH 问题排查https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh

[2] 使用串行控制台进行问题排查https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-using-serial-console

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.yiheng8.com/155000.html