云服务器内容精选

  • 编辑hosts.allow和hosts.deny “/etc/hosts.allow”和“/etc/hosts.deny”是控制远程访问的文件,通过配置该文件可以允许或者拒绝某个IP或者IP段的客户访问Linux云服务器的某项服务。 比如SSH服务,通常只对管理员开放,那就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。 因为云服务器需要在不同地点登录,建议编辑“/etc/hosts.allow”允许所有IP地址登录,这样不会影响正常使用。 vim /etc/hosts.allow 在最后一行增加“sshd:ALL”。 可以通过一些方法识别云服务器的安全风险,比如检查SSH状态,查看疑似恶意登录的IP,然后在“/etc/hosts.deny”中将这些地址禁止。
  • 增加防火墙规则:开放指定端口 CentOS 7系列操作系统的默认防火墙是fireware,而不是iptables。因此,如果系统是默认防火墙,则不需要执行本节操作;如果安装过iptables,则要参考本节指导开放SSH登录的5000端口。 执行以下命令,检查是否安装了iptables。 service iptables status 如果提示如下类似信息,表示未安装iptables,跳过本节,继续添加安全组规则操作。 如果提示如下类似信息,表示安装了iptables,并且为“active”状态。继续执行步骤2。 执行以下命令增加iptables规则,开放5000端口。 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT 执行以下命令查看iptables现有规则是否已包含5000端口。 iptables -L -n
  • 步骤四:关闭备E CS 的IP转发功能 使用虚拟IP构建主备场景的高可用集群时,需要关闭备ECS的IP转发功能,当主备ECS切换后,则需要确保新的备ECS也关闭IP转发功能。 为了避免ECS主备切换后遗漏配置,建议您将主备ECS的IP转发功能全都关闭。 打开浏览器,并输入EIP地址(124.X.X.187),通过网页确认主ECS。 网页如下图所示,表示此时主ECS是ECS-HA1。 图6 主ECS验证 远程登录备ECS,本示例是ECS-HA2。 ECS有多种登录方法,具体请参见登录弹性云服务器。 请根据ECS的操作系统,在表4中选择关闭IP转发功能的操作,本示例ECS为Linux操作系统。 表4 关闭IP转发功能 操作系统 操作指导 Linux系统 执行以下命令,切换root用户。 su root 执行以下命令,查看IP转发功能是否已开启。 cat /proc/sys/net/ipv4/ip_forward 回显结果:1为开启,0为关闭,默认为0。 回显为0,任务结束。 回显为1,继续执行以下操作。 以下提供两种方法修改配置文件,二选一即可。 方法一: 执行以下命令,打开“/etc/sysctl.conf”文件。 vim /etc/sysctl.conf 按i进入编辑模式。 修改net.ipv4.ip_forward = 0。 按ESC退出,并输入:wq!保存配置。 方法二: 执行sed命令,命令示例如下: sed -i '/net.ipv4.ip_forward/s/1/0/g' /etc/sysctl.conf 执行以下命令,使修改生效。 sysctl -p /etc/sysctl.conf Windows系统 在搜索框中输入cmd,打开Windows系统的“命令提示符”窗口,执行以下命令。 ipconfig/all 回显结果中,“IP 路由已启用”为 “否”, 表示IP转发功能已关闭。 回显结果中,“IP 路由已启用”为 “是”, 表示IP转发功能未关闭,继续执行以下操作。 在搜索框中输入regedit,打开注册表编辑器。 编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的IPEnableRouter值为0。 指定值为 0:关闭 IP 转发。 指定值为 1:启用 IP 转发。
  • 步骤三:将虚拟IP绑定至主备ECS及EIP 将虚拟IP分别绑定至主备ECS上,本示例中需要绑定ECS-HA1和ECS-HA2。 具体操作请参见将虚拟IP地址绑定至实例或EIP。 关闭主备ECS网卡的“源/目的检查”功能。 将虚拟IP绑定至ECS时,系统会自动关闭ECS网卡的“源/目的检查”功能,您需要参考以下操作检查关闭情况。如果未关闭,则请关闭该功能。 在ECS列表中,单击目标ECS的名称。 进入ECS详情页。 选择“弹性网卡”页签,并单击展开ECS的网卡详情区域,可以查看“源/目的检查”功能。 如图5所示,表示“源/目的检查”功能已关闭。 图5 关闭网卡的“源/目的检查”功能 将虚拟IP绑定至EIP上,本示例中需要绑定EIP-A。 具体操作请参见将虚拟IP地址绑定至实例或EIP。
  • 步骤二:为主备ECS配置Keepalived 执行以下操作,为ECS-HA1配置Keepalived。 将EIP绑定至ECS-HA1。 具体方法请参见绑定弹性公网IP。 远程登录ECS-HA1。 ECS有多种登录方法,具体请参见登录弹性云服务器。 执行以下命令,安装Nginx、Keepalived软件包及相关依赖包。 yum install nginx keepalived -y 回显类似如下信息,表示安装完成。 [root@ecs-ha1 ~]# yum install nginx keepalived -y Loaded plugins: fastestmirror Determining fastest mirrors base | 3.6 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/7): epel/x86_64/group | 399 kB 00:00:00 (2/7): epel/x86_64/updateinfo | 1.0 MB 00:00:00 (3/7): base/7/x86_64/primary_db | 6.1 MB 00:00:00 (4/7): base/7/x86_64/group_gz | 153 kB 00:00:00 (5/7): epel/x86_64/primary_db | 8.7 MB 00:00:00 (6/7): extras/7/x86_64/primary_db | 253 kB 00:00:00 (7/7): updates/7/x86_64/primary_db ..... Dependency Installed: centos-indexhtml.noarch 0:7-9.el7.centos gperftools-libs.x86_64 0:2.6.1-1.el7 lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7_9.1 net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.4 net-snmp-libs.x86_64 1:5.7.2-49.el7_9.4 nginx-filesystem.noarch 1:1.20.1-10.el7 openssl11-libs.x86_64 1:1.1.1k-7.el7 Complete! 执行以下操作,修改Nginx配置文件,添加80端口相关配置。 执行以下命令,打开“/etc/nginx/nginx.conf”文件。 vim /etc/nginx/nginx.conf 按i进入编辑模式。 将文件中原有的内容,全部替换成以下内容。 user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 按ESC退出,并输入:wq!保存配置。 执行以下操作,修改index.html文件内容,用来验证网站的访问情况。 执行以下命令,打开“/usr/share/nginx/html/index.html”文件。 vim /usr/share/nginx/html/index.html 按i进入编辑模式。 将文件中原有的内容,全部替换成以下内容。 Welcome to ECS-HA1 按ESC退出,并输入:wq!保存配置。 执行以下命令,设置Nginx服务开机自启动,并启动Nginx服务。 systemctl enable nginx systemctl start nginx.service 回显类似如下信息: [root@ecs-ha1 ~]# systemctl enable nginx Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service. [root@ecs-ha1 ~]# systemctl start nginx.service 打开浏览器,并输入EIP地址(124.X.X.187),验证Nginx单节点的访问情况。 网页如下图所示,表示ECS-HA1的Nginx配置成功。 图3 ECS-HA1访问验证 执行以下操作,修改Keepalived配置文件。 执行以下命令,打开“/etc/keepalived/keepalived.conf”文件。 vim /etc/keepalived/keepalived.conf 按i进入编辑模式。 根据实际情况,替换配置文件中的IP参数,并将文件中原有的内容,全部替换成以下内容。 mcast_src_ip和unicast_src_ip:替换为ECS-HA1的私有IP地址,本示例为192.168.0.195。 virtual_ipaddress:替换为虚拟IP地址,本示例为192.168.0.177。 ! Configuration File for keepalived global_defs { router_id master-node } vrrp_script chk_http_port { script "/etc/keepalived/chk_nginx.sh" interval 2 weight -5 fall 2 rise 1 } vrrp_instance VI_1 { state BACKUP interface eth0 mcast_src_ip 192.168.0.195 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.0.195 virtual_ipaddress { 192.168.0.177 } track_script { chk_http_port } } 按ESC退出,并输入:wq!保存配置。 执行以下操作,配置Nginx监控脚本。 执行以下命令,打开“/etc/keepalived/chk_nginx.sh”文件。 vim /etc/keepalived/chk_nginx.sh 按i进入编辑模式。 将文件中原有的内容,全部替换成以下内容。 #!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl start nginx.service sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived.service fi fi 按ESC退出,并输入:wq!保存配置。 执行以下命令,为“chk_nginx.sh”文件添加执行权限。 chmod +x /etc/keepalived/chk_nginx.sh 执行以下命令,设置Keepalived服务开机自启动,并启动Keepalived服务。 systemctl enable keepalived systemctl start keepalived.service 将EIP和ECS-HA1解绑定。 具体方法请参见解绑弹性公网IP。 执行以下操作,为ECS-HA2配置Keepalived。 将EIP绑定至ECS-HA2。 具体方法请参见绑定弹性公网IP。 远程登录ECS-HA2。 ECS有多种登录方法,具体请参见登录弹性云服务器。 执行以下命令,安装Nginx、Keepalived软件包及相关依赖包。 yum install nginx keepalived -y 回显类似如下信息,表示安装完成。 [root@ecs-ha2 ~]# yum install nginx keepalived -y Loaded plugins: fastestmirror Determining fastest mirrors base | 3.6 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/7): epel/x86_64/group | 399 kB 00:00:00 (2/7): epel/x86_64/updateinfo | 1.0 MB 00:00:00 (3/7): base/7/x86_64/primary_db | 6.1 MB 00:00:00 (4/7): base/7/x86_64/group_gz | 153 kB 00:00:00 (5/7): epel/x86_64/primary_db | 8.7 MB 00:00:00 (6/7): extras/7/x86_64/primary_db | 253 kB 00:00:00 (7/7): updates/7/x86_64/primary_db ..... Dependency Installed: centos-indexhtml.noarch 0:7-9.el7.centos gperftools-libs.x86_64 0:2.6.1-1.el7 lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7_9.1 net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.4 net-snmp-libs.x86_64 1:5.7.2-49.el7_9.4 nginx-filesystem.noarch 1:1.20.1-10.el7 openssl11-libs.x86_64 1:1.1.1k-7.el7 Complete! 执行以下操作,修改Nginx配置文件,添加80端口相关配置。 执行以下命令,打开“/etc/nginx/nginx.conf”文件。 vim /etc/nginx/nginx.conf 按i进入编辑模式。 将文件中原有的内容,全部替换成以下内容。 user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 按ESC退出,并输入:wq!保存配置。 执行以下操作,修改index.html文件内容,用来验证网站的访问情况。 执行以下命令,打开“/usr/share/nginx/html/index.html”文件。 vim /usr/share/nginx/html/index.html 按i进入编辑模式。 将文件中原有的内容,全部替换成以下内容。 Welcome to ECS-HA2 按ESC退出,并输入:wq!保存配置。 执行以下命令,设置Nginx服务开机自启动,并启动Nginx服务。 systemctl enable nginx systemctl start nginx.service 回显类似如下信息: [root@ecs-ha2 ~]# systemctl enable nginx Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service. [root@ecs-ha2 ~]# systemctl start nginx.service 打开浏览器,并输入EIP地址(124.X.X.187),验证Nginx单节点的访问情况。 网页如下图所示,表示ECS-HA2的Nginx配置成功。 图4 ECS-HA2访问验证 执行以下操作,修改Keepalived配置文件。 执行以下命令,打开“/etc/keepalived/keepalived.conf”文件。 vim /etc/keepalived/keepalived.conf 按i进入编辑模式。 根据实际情况,替换配置文件中的IP参数,并将文件中原有的内容,全部替换成以下内容。 mcast_src_ip和unicast_src_ip:替换为ECS-HA2的私有IP地址,本示例为192.168.0.233。 virtual_ipaddress:替换为虚拟IP地址,本示例为192.168.0.177。 ! Configuration File for keepalived global_defs { router_id master-node } vrrp_script chk_http_port { script "/etc/keepalived/chk_nginx.sh" interval 2 weight -5 fall 2 rise 1 } vrrp_instance VI_1 { state BACKUP interface eth0 mcast_src_ip 192.168.0.233 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.0.233 virtual_ipaddress { 192.168.0.177 } track_script { chk_http_port } } 按ESC退出,并输入:wq!保存配置。 执行以下操作,配置Nginx监控脚本。 执行以下命令,打开“/etc/keepalived/chk_nginx.sh”文件。 vim /etc/keepalived/chk_nginx.sh 按i进入编辑模式。 将文件中原有的内容,全部替换成以下内容。 #!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl start nginx.service sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived.service fi fi 按ESC退出,并输入:wq!保存配置。 执行以下命令,为“chk_nginx.sh”文件添加执行权限。 chmod +x /etc/keepalived/chk_nginx.sh 执行以下命令,设置Keepalived服务开机自启动,并启动Keepalived服务。 systemctl enable keepalived systemctl start keepalived.service 将EIP和ECS-HA2解绑定。 具体方法请参见解绑弹性公网IP。
  • 方案架构 本示例中,高可用Web集群架构如图1所示,将虚拟IP同时绑定至ECS-HA1和ECS-HA2,使用Keepalived搭建一个高可用集群。同时,为虚拟IP绑定EIP,该集群具备公网访问能力,可以面向公网提供Web访问服务。实现原理如下: ECS-HA1作为主云服务器,通过与虚拟IP绑定的EIP对外提供服务,ECS-HA2作为备云服务器不承载实际业务。 当ECS-HA1发生故障时,此时会自动启用ECS-HA2,ECS-HA2将会接管业务并对外提供服务,实现业务不中断的高可用需求。 图1 使用虚拟IP和Keepalived搭建高可用Web集群
  • 资源规划说明 本示例中, 虚拟私有云VPC 和子网、虚拟IP、弹性公网IP以及弹性 云服务器ECS 等资源只要位于同一个区域内即可,可用区可以任意选择,无需保持一致。 以下资源规划详情仅为示例,您可以根据需要自行修改。 表1 使用虚拟IP和Keepalived搭建高可用Web集群资源规划总体说明 资源类型 资源数量 说明 虚拟私有云VPC和子网 1 VPC名称:请根据实际情况填写,本示例为VPC-A。 IPv4网段:请根据实际情况填写,本示例为192.168.0.0/16。 子网名称:请根据实际情况填写,本示例为Subnet-A01。 子网IPv4网段:请根据实际情况填写,本示例为192.168.0.0/24。 弹性云服务器ECS 2 本示例中,需要两个ECS作为主备倒换,配置说明如下: 名称:根据实际情况填写,本示例分别为ECS-HA1和ECS-HA2。 镜像:请根据实际情况选择,本示例为公共镜像(CentOS 7.8 64bit)。 系统盘:通用型SSD盘,40GB。 数据盘:本示例未选购数据盘,请您根据实际业务需求选购数据盘,并切实考虑两个ECS节点之间的业务数据一致性问题。 网络: 虚拟私有云:选择您的虚拟私有云,本示例为VPC-A。 子网:选择子网,本示例为Subnet-A01。 安全组:请根据实际情况选择,本示例中ECS-HA1和ECS-HA2使用同一个安全组,安全组名称为Sg-A。 私有IP地址:ECS-HA1为192.168.0.195,ECS-HA2为192.168.0.233 虚拟IP 1 在子网Subnet-A01中申请虚拟IP地址: 创建方式:根据实际情况填写,本示例为自动分配。 虚拟IP地址:本示例为192.168.0.177。 绑定实例:将虚拟IP绑定至ECS-HA1和ECS-HA2。 绑定弹性公网IP:将虚拟IP绑定至EIP-A。 弹性公网IP 1 计费模式:请根据情况选择计费模式,本示例为按需计费。 EIP名称:请根据实际情况填写,本示例为EIP-A。 EIP地址:EIP地址系统随机分配,本示例为124.X.X.187。
  • 步骤一:创建云服务资源 创建1个VPC和1个子网。 具体方法请参见创建虚拟私有云和子网。 创建2个ECS,分别作为主ECS和备ECS。 具体方法请参见购买方式概述。 本示例中,ECS的网络配置详情如下: 网络:选择已创建的虚拟私有云和子网,VPC-A和Subnet-A01。 安全组:新建一个安全组Sg-A,并添加入方向和出方向规则。您在创建安全组的时候,系统会自动添加部分规则,您需要根据实际情况进行检查修改。 本示例中,ECS-HA1和ECS-HA2属于同一个安全组,您需要确保表2中的规则均已正确添加。 表2 安全组Sg-A规则说明 方向 策略 类型 协议端口 源地址/目的地址 描述 入方向 允许 IPv4 TCP: 22 源地址:0.0.0.0/0 放通安全组内ECS的SSH(22)端口,用于远程登录Linux ECS。 入方向 允许 IPv4 TCP: 3389 源地址:0.0.0.0/0 放通安全组内ECS的RDP(3389)端口,用于远程登录Windows ECS。 入方向 允许 IPv4 TCP: 80 源地址:0.0.0.0/0 放通安全组内ECS的HTTP(80)端口,用于外部通过HTTP协议访问ECS上部署的网站。 入方向 允许 IPv4 全部 源地址:当前安全组Sg-A 针对IPv4,用于安全组内ECS之间网络互通。 入方向 允许 IPv6 全部 源地址:当前安全组Sg-A 针对IPv6,用于安全组内ECS之间网络互通。 出方向 允许 IPv4 全部 目的地址:0.0.0.0/0 针对IPv4,用于安全组内ECS访问外部,允许流量从安全组内ECS流出。 出方向 允许 IPv6 全部 目的地址:::/0 针对IPv6,用于安全组内ECS访问外部,允许流量从安全组内ECS流出。 本示例中,源地址设置为0.0.0.0/0表示允许所有外部IP远程登录云服务器,为了确保安全,建议您遵循最小原则,根据实际情况将源IP设置为特定的IP地址,比如,源地址设置为您的本地PC地址。 如果您的ECS位于不同的安全组,比如ECS-HA1属于Sg-A,ECS-HA2属于Sg-B,则除了在两个安全组中分别配置表2中的规则,您还需要添加表3中的规则,放通两个安全组之间的内网网络流量。 表3 安全组Sg-A和Sg-B规则说明 安全组 方向 策略 类型 协议端口 源地址/目的地址 描述 Sg-A 入方向 允许 IPv4 全部 源地址:Sg-B 针对全部IPv4协议,允许来自Sg-B内实例的流量访问Sg-A内的实例。 Sg-B 入方向 允许 IPv4 全部 源地址:Sg-A 针对全部IPv4协议,允许来自Sg-A内实例的流量访问Sg-B内的实例。 弹性公网IP:选择“暂不购买”。 在子网Subnet-A01内,申请虚拟IP地址。 具体方法请参见申请虚拟IP地址。 申请弹性公网IP。 具体方法请参见购买弹性公网IP。
  • 步骤四:关闭备ECS的IP转发功能 使用虚拟IP构建主备场景的高可用集群时,需要关闭备ECS的IP转发功能,当主备ECS切换后,则需要确保新的备ECS也关闭IP转发功能。 为了避免ECS主备切换后遗漏配置,建议您将主备ECS的IP转发功能全都关闭。 打开浏览器,并输入EIP地址(124.X.X.187),通过网页确认主ECS。 网页如下图所示,表示此时主ECS是ECS-HA1。 图8 ECS-HA1访问验证 远程登录备ECS,本示例是ECS-HA2。 ECS有多种登录方法,具体请参见登录弹性云服务器。 请根据ECS的操作系统,在表4中选择关闭IP转发功能的操作,本示例ECS为Linux操作系统。 表4 关闭IP转发功能 操作系统 操作指导 Linux系统 执行以下命令,切换root用户。 su root 执行以下命令,查看IP转发功能是否已开启。 cat /proc/sys/net/ipv4/ip_forward 回显结果:1为开启,0为关闭,默认为0。 回显为0,任务结束。 回显为1,继续执行以下操作。 以下提供两种方法修改配置文件,二选一即可。 方法一: 执行以下命令,打开“/etc/sysctl.conf”文件。 vim /etc/sysctl.conf 按i进入编辑模式。 修改net.ipv4.ip_forward = 0。 按ESC退出,并输入:wq!保存配置。 方法二: 执行sed命令,命令示例如下: sed -i '/net.ipv4.ip_forward/s/1/0/g' /etc/sysctl.conf 执行以下命令,使修改生效。 sysctl -p /etc/sysctl.conf Windows系统 在搜索框中输入cmd,打开Windows系统的“命令提示符”窗口,执行以下命令。 ipconfig/all 回显结果中,“IP 路由已启用”为 “否”, 表示IP转发功能已关闭。 回显结果中,“IP 路由已启用”为 “是”, 表示IP转发功能未关闭,继续执行以下操作。 在搜索框中输入regedit,打开注册表编辑器。 编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的IPEnableRouter值为0。 指定值为 0:关闭 IP 转发。 指定值为 1:启用 IP 转发。