暂无个人介绍
2021年12月
当您在Linux系统上部署业务时希望程序能够区分不同的ECS实例,可能会通过systemd-machine-id-setup命令重置/etc/machine-id的方式来实现,但该方式需要您在每台ECS实例上重新生成machine ID。为免去繁琐的操作,阿里云推荐您通过/sys/class/dmi/id/product_uuid文件来区分不同的ECS实例,该文件作为实例对外的唯一标识之一,可完全取代/etc/machine-id的作用,并且操作简便,只需要获取实例对应的UUID即可。您可以运行以下命令查看ECS实例的/sys/class/dmi/id/product_uuid信息:
cat /sys/class/dmi/id/product_uuid
返回结果示例:
创建ECS时,DNS服务器采用默认配置,不需要额外配置。
Linux系统存在不同的发行版本,不同发行版本中自定义配置DNS的方法不同,请根据现场环境匹配下列发行版本的操作命令。DNS配置完成之后请参见文件锁定方式,避免因为重启系统配置还原。
1.Alibaba Cloud Linux 2
2.Ubuntu
Ubuntu 16
Ubuntu 18/20
3.CentOS
CentOS 6/7/8
4.Debian
Debian 9/10
5.SUSE Linux
SUSE Linux 12/15
6.OPENSUSE
OPENSUSE 15
详情参见:如何在Linux实例中自定义配置DNS
CentOS 7或RedHat 7系列的系统在升级Systemd至systemd-219-71.el7版本后,重启实例会进入救援模式,这样会导致系统网络服务和一般的应用软件服务异常。具体解决方案请参见CentOS 7.X或RedHat 7.X升级Systemd并重启后会进入救援模式。
查看并记录Linux实例的IP地址和网关信息
1.登录Linux系统的ECS实例,执行以下命令,查看实例的IP地址和子网掩码。
ifconfig
2.执行以下命令,查看实例的网关信息。
route -n
3.通过阿里云的MetaServer获取相关信息。
修改ECS实例的网络类型
1.编辑以下文件,将BOOTPROTO的值修改为static,并将以上步骤中记录的IP地址、网关信息、子网掩码填写到该配置文件中,保存并退出。
/etc/sysconfig/network-scripts/ifcfg-eth0
2.执行以下命令,重启网络服务。
systemctl restart network
该问题可能是由于断电等情况,导致ECS实例内存数据丢失引发的文件系统错误。问题详情及修复方案,请参见ECS实例系统启动失败时报“UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.”的错误。
历史Linux镜像创建的ECS云服务器,可能存在NTP、阿里云软件源没有配置的情况,还可能存在安全漏洞。修复这些问题,可以让您的云服务器更加安全,可以使用阿里云提供的免费NTP服务器进行时间同步,还可以使用阿里云提供的软件源服务安装软件。修复方法如下:
1.配置NTP服务,请参见配置Linux实例NTP服务(CentOS 6)。
2.添加阿里云软件源,请参见添加软件源。
3.主要修复目前已知的重大安全漏洞,需要升级的软件包括: bash 、glibc 、 openssl 、wget 、ntp 。
在执行如下命令之前,需要确保系统当前的软件源已经正确设置。
CentOS和Aliyun Linux系统:yum update bash glibc openssl wget ntp
Ubuntu和Debian系统:apt-get install bash libc6 libc-bin openssl wget ntp
您可以根据实际情况,从本文提供的四种解决方法中选择其中一种。
方法1:云助手批量修复。适用于多台实例的场景,可以在ECS控制台上完成,操作方式更简便。
方法2:基于云助手API编写的Python SDK脚本。以地域为修复单位,批量检测您的实例状态并完成自动修复。适用于熟悉脚本化运维的用户。
方法3:提供了Shell和PowerShell脚本,需要您登录到ECS实例中手动修复,适用于在少量实例中轮询或测试的场景。其中,脚本内容和解决方法1一致。
方法4:逐一排查网卡,适用于少量实例的场景。
以下几种镜像为已经打开Meltdown安全漏洞补丁(采取PTI ON措施)的公共镜像,镜像将随着阿里云公共镜像的更新而发生变化。
CentOS 7.5/7.6 Debian 9.6/8.10 Red Hat 7.5/7.6 SUSE Linux 15 Ubuntu 18.04 CoreOS 1911.3.0 FreeBSD 11.2 OpenSUSE 15
如果您认为开启PTI ON对实例性能有影响,或者您有其他防护措施,可以根据以下步骤关闭PTI ON。
注:如何添加或修改内核参数,请参阅各Linux发行版对应的官方网站。
阿里云目前支持IBRS和IBPB输出。公共镜像默认通过Reptpoline和IBPB (Indirect Branch Prediction Barriers)的限制策略对Spectre漏洞进行防护,同时通过noibrs参数禁用了IBPB。以下几种镜像为涉及的公共镜像,镜像将随着阿里云公共镜像的更新而发生变化。
CentOS 7.5/7.6 Debian 9.6/8.10 Red Hat 7.5/7.6 SUSE Linux 15 Ubuntu 18.04 CoreOS 1911.3.0 FreeBSD 11.2 OpenSUSE 15
如果您需要恢复操作系统的默认设置,或者认为当前设置对性能有影响,若您有其他防护措施需要关闭Spectre安全漏洞补丁,请按照以下步骤做相应的修改。
注:如何添加或修改内核参数,请参阅各Linux发行版对应的官方网站。
解决方案
1.升级系统内核版本
登录实例,执行如下命令,将系统内核升级至3.10.0-693.21.1.el7.x86_64及以上版本。
yum update kernel
2.修改配置参数
如果您不方便升级系统内核,也可以采用如下两种方法解决该问题。
方法一
通过执行以下命令,调整内核参数的值,使gc_thresh1的值大于VPC同一网段内实例数量,并确保gc_thresh3的值大于gc_thresh2的值,gc_thresh2的值大于gc_thresh1的值。
方法二
规划网段时,建议您控制VPC同一网段内实例数量,避免出现同一网段内实例数量过多的情况。
在弹性裸金属服务器实例规格族的ECS实例中,RedHat 8.1/8.2镜像相较于RedHat 7镜像启动时长多1~2分钟。为解决该问题,您可以在RedHat 8.1/8.2系统的/boot/grub2/grubenv文件中,将内核启动参数console=ttyS0 console=ttyS0,115200n8修改为console=tty0 console=ttyS0,115200n8,然后重启服务器使配置生效。
RedHat 8.1 v1版本镜像中kdump服务默认未开启。如果您需要使用kdump,请运行以下命令开启kdump服务。
systemctl enable kdump
systemctl start kdump
当前部分RHEL镜像默认未开启kdump,您可以提交工单获取dump文件。请注意,通过提交工单获取dump文件时,内存大于16 GiB的实例规格可能出现无法获取dump文件的情况,详情请以工单内信息为准。
公共镜像中默认未开启kdump服务。若您需要实例在宕机时,生成core文件,并以此分析宕机原因,请参见以下步骤开启kdump服务。本步骤以公共镜像CentOS 7.2为例。实际操作时,请以您的操作系统为准。
1.设置core文件生成目录。
1)运行vim /etc/kdump.conf打开kdump配置文件。vim命令使用详情,请参见Vim教程。
2)设置path为core文件的生成目录。本示例中,在/var/crash目录下生成core文件,则path的设置如下。
path /var/crash
3)保存并关闭/etc/kdump.conf文件。
2.开启kdump服务。
根据操作系统对命令的支持情况,选择开启方式。本示例中,CentOS 7.2使用方法一开启kdump服务。
方法一: 依次运行以下命令开启kdump服务。
systemctl enable kdump.service
systemctl start kdump.service
方法二: 依次运行以下命令开启kdump服务。
chkconfig kdump on
service kdump start
3.运行以下命令模拟宕机。
echo c > /proc/sysrq-trigger
说明 运行该命令后,实例会与网络失去连接。您需要重新连接实例,完成后续操作。
4.分析core文件。
1)运行以下命令安装Crash分析工具。
yum install crash
2)下载debug-info安装包。
运行uname -r命令查看操作系统内核版本,下载相应版本的debug-info包。
kernel-debuginfo-common-x86_64-<内核版本>.rpm
kernel-debuginfo-<内核版本>.rpm
说明 不同CentOS版本的debug-info包下载地址有所不同。您可以通过CentOS官网查找对应版本软件包的下载地址,具体请参见CentOS debuginfo软件包。
本示例中,系统的内核版本为3.10.0-514.26.2.el7.x86_64,因此下载命令为:
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64.rpm
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-3.10.0-514.26.2.el7.x86_64.rpm
3)依次运行下列命令,安装debug-info包。
rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64.rpm
rpm -ivh kernel-debuginfo-3.10.0-514.26.2.el7.x86_64.rpm
4)依次运行以下命令使用Crash工具分析core文件。
cd <core文件的生成目录>
crash /usr/lib/debug/lib/modules/<内核版本号>/vmlinux vmcore
本示例中,core文件的生成目录为/var/crash/127.0.0.1-2019-07-08-15:52:25,内核版本号为3.10.0-514.26.2.el7.x86_64,因此运行的命令为:
cd /var/crash/127.0.0.1-2019-07-08-15:52:25
crash /usr/lib/debug/lib/modules/3.10.0-514.26.2.el7.x86_64/vmlinux vmcore
Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作的内存数据,临时保存到Swap分区或虚拟内存文件中,以提高可用内存额度的一种机制。
但是,如果在内存使用率已经非常高,而同时I/O性能也不是很好的情况下,该机制其实会起到相反的效果。阿里云ECS云盘使用了分布式文件系统作为云服务器的存储,对每一份数据都进行了强一致的多份拷贝。该机制在保证用户数据安全的同时,由于3倍增涨的I/O操作,会降低本地磁盘的存储性能和I/O性能。
综上,为了避免当系统资源不足时进一步降低ECS云磁盘的I/O性能,所以Windows系统实例默认没有启用虚拟内存,Linux系统实例默认未配置Swap分区。
处理CentOS DNS解析超时的详情如下:
1.原因分析
因CentOS 6和CentOS 7的DNS解析机制变动,导致2017年2月22日以前创建的ECS实例或使用2017年2月22日以前的自定义镜像创建的CentOS 6和CentOS 7实例可能出现DNS解析超时的情况。
2.解决方法
请按下列步骤操作修复此问题:
下载脚本fix_dns.sh。
将下载的脚本放至CentOS系统的/tmp目录下。
运行bash /tmp/fix_dns.sh命令,执行脚本。
3.脚本作用
判断DNS解析文件/etc/resolv.conf中是否存在options>single-request-reopen配置。详情请参见resolv.conf文件说明。
CentOS 6和CentOS 7的DNS解析机制,使用相同的网络五元组发送IPV4 DNS请求和IPV6 DNS请求,此时应开启single-request-reopen配置。开启该配置后,一旦需要处理同一socket发送的两次请求时,解析端会在发送第一次请求后关闭socket,并在发送第二次请求前打开新的socket。配置成功后,无需重启实例即可生效。
4.脚本逻辑
1)判断实例系统是否为CentOS。
如果实例为非CentOS系统(如Ubuntu和Debian):脚本停止工作。
如果实例为CentOS系统:脚本继续工作。
2)查询解析文件/etc/resolv.conf中options的配置情况。
如果不存在options配置:
默认使用阿里云options配置options timeout:2 attempts:3 rotate single-request-reopen。
如果存在options配置:
不存在single-request-reopen配置,则在options配置中追加该项。
存在single-request-reopen配置,则脚本停止工作,不更改DNS nameserver的配置。
内网互通可以通过高速通道和云企业网实现。
要互连的网络实例(专有网络VPC、本地数据中心关联的边界路由器VBR、本地分支或总部加入的云连接网CCN)的所属地域和账号决定了网络互通所需的步骤。在开始使用CEN配置互连网络前,您需要明确要互通的网络实例及所属账号和地域情况。
详情请参见 《云企业网文档》步骤一:网络规划。
ECS实例间迁移步骤如下:
1.为源ECS实例创建自定义镜像。
2.根据源ECS实例与目标ECS实例的归属地域和归属账号,迁移分为以下几种情况。
源实例与目标实例属于同地域同账号,可直接进入下一步。
源实例与目标实例属于不同地域,需复制镜像至目标实例所在地域。详情请参见复制镜像。
源实例与目标实例属于不同账号,需共享镜像给目标实例的账号。详情请参见共享或取消共享镜像。
源实例与目标实例属于不同地域和不同账号,需先复制镜像到目标地域,再分享给目标实例的账号。详情请参见复制镜像和共享或取消共享镜像。
3.使用镜像创建新的ECS实例,或为现有目标ECS实例更换镜像。详情请参见使用自定义镜像创建实例或更换操作系统(镜像)。
说明 为现有目标ECS实例更换镜像时,源镜像中不能包含数据盘快照。
以上迁移步骤不适用时,请参见阿里云ECS实例间迁移。
您可以通过下列步骤操作:
1.使用账号A的实例创建自定义镜像。具体步骤,请参见使用实例创建自定义镜像。
2.共享镜像给账号B。具体步骤,请参见共享或取消共享镜像。
3.账号B使用共享镜像创建实例。具体步骤,请参见使用自定义镜像创建实例。
请确保您已将镜像共享给新购服务器的账号,并根据实际情况选择下列方法之一进行操作。
如果共享镜像和新购服务器在同一个地域,可以更换系统盘,更换时选择您共享的镜像即可。具体步骤,请参见更换操作系统(非公共镜像)。
如果共享镜像和新购服务器不在同一个地域,需要先复制镜像到目标地域,再通过更换系统盘来更换镜像。具体步骤,请参见复制镜像和更换操作系统(非公共镜像)。
注意:更换系统盘存在如下风险:
原系统盘会被释放,建议您提前创建快照备份数据。
更换系统盘需要停止实例,因此会中断您的业务。
更换系统盘完成后,您需要在新的系统盘中重新部署业务运行环境,有可能会对您的业务造成长时间的中断。
更换系统盘是重新为您的实例分配一个系统盘,磁盘ID会改变,所以基于旧的系统盘创建的快照将不能用于回滚新的系统盘。
您可以为之前的ECS实例创建自定义镜像,然后使用该自定义镜像创建ECS实例即可。具体步骤,请参见使用实例创建自定义镜像和使用自定义镜像创建实例。