此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍在Amazon Web Services(AWS)、Microsoft Azure和Google云平台(GCP)上为高可用性第3版(HAv3)配置CSR1000v路由器的步骤。
Cisco 建议您了解以下主题:
本文假设底层网络配置已完成,并重点介绍HAv3配置。
完整的配置详细信息可在Cisco CSR 1000v和Cisco ISRv软件配置指南中找到。
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解任何命令的潜在影响。
思科建议您了解可用的不同HA版本:
HAv3可从Cisco IOS®-XE Polaris 16.11.1s获得,并添加了以下几项新功能:
注意:在AWS、Azure或GCP中通过本文档中的步骤部署的资源可能会产生成本。
在开始配置之前,必须完全了解拓扑和设计。这有助于在以后排除任何潜在问题。
虽然网络拓扑图基于AWS,但云之间的底层网络部署相对相似。 网络拓扑也与所使用的HA版本无关,无论是HAv1、HAv2还是HAv3。
对于此拓扑示例,AWS中使用以下设置配置HA冗余:
HA对中有2个CSR1000v路由器,位于两个不同的可用区域。第三个区域是专用实例,用于模拟专用数据中心中的设备。通常,所有正常流量必须流经专用(或内部)路由表。
步骤1.配置IOX应用托管和guestshell,这为guestshell提供ip可达性。 部署CSR1000v时,默认情况下可自动配置此步骤。
vrf definition GS ! iox app-hosting appid guestshell app-vnic gateway1 virtualportgroup 0 guest-interface 0 guest-ipaddress 192.168.35.102 netmask 255.255.255.0 app-default-gateway 192.168.35.101 guest-interface 0 name-server0 8.8.8.8 ! interface VirtualPortGroup0 vrf forwarding GS ip address 192.168.35.101 255.255.255.0 ip nat inside ! interface GigabitEthernet1 ip nat outside ! ip access-list standard GS_NAT_ACL permit 192.168.35.0 0.0.0.255 ! ip nat inside source list GS_NAT_ACL interface GigabitEthernet1 vrf GS overload ! ! The static route points to the G1 ip address's gateway ip route vrf GS 0.0.0.0 0.0.0.0 GigabitEthernet1 10.1.0.1 global
步骤2.启用并登录至guestshell。
Device#guestshell enable Interface will be selected if configured in app-hosting Please wait for completion guestshell installed successfully Current state is: DEPLOYED guestshell activated successfully Current state is: ACTIVATED guestshell started successfully Current state is: RUNNING Guestshell enabled successfully Device#guestshell
[guestshell@guestshell ~]$
注意:有关guestshell的详细信息,请参阅 — 可编程性配置指南
步骤3.确认guestshell能够与Internet通信。
[guestshell@guestshell ~]$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=109 time=1.74 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=109 time=2.19 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=109 time=2.49 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=109 time=1.41 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=109 time=3.04 ms
步骤4.(可选)启用双向转发检测(BFD)和路由协议作为增强型内部网关路由协议(EIGRP)或边界网关协议(BGP)到隧道以进行对等体故障检测。在Cisco CSR 1000v路由器之间配置VxLAN或IPsec隧道。
crypto isakmp policy 1 encr aes 256 authentication pre-share crypto isakmp key cisco addresscrypto ipsec transform-set uni-perf esp-aes 256 esp-sha-hmac mode tunnel crypto ipsec profile vti-1 set security-association lifetime kilobytes disable set security-association lifetime seconds 86400 set transform-set uni-perf set pfs group2 interface Tunnel1 ip address 192.168.1.1 255.255.255.0 bfd interval 500 min_rx 500 multiplier 3 tunnel source GigabitEthernet1 tunnel destination redundancy cloud-ha bfd peer Example - #CSR1 ! interface Tunnel1 ip address 192.168.1.1 255.255.255.0 bfd interval 500 min_rx 500 multiplier 3 tunnel source GigabitEthernet1 tunnel destination 10.1.0.11 ! redundancy cloud-ha bfd peer 192.168.1.2 #CSR2 ! interface Tunnel1 ip address 192.168.1.2 255.255.255.0 bfd interval 500 min_rx 500 multiplier 3 tunnel source GigabitEthernet1 tunnel destination 10.1.0.10 ! redundancy cloud-ha bfd peer 192.168.1.1
Example: interface Tunnel100 ip address 192.168.1.1 255.255.255.0 bfd interval 500 min_rx 500 multiplier 3 tunnel source GigabitEthernet1 tunnel mode vxlan-gpe ipv4 tunnel destinationtunnel vxlan vni 10000 redundancy cloud-ha bfd peer
步骤 4.1 (可选)在隧道接口上配置EIGRP。
router eigrp 1 bfd interface Tunnel1 network 192.168.1.0 0.0.0.255
event manager applet Interface_GigabitEthernet2 event syslog pattern “Interface GigabitEthernet2, changed state to administratively down” action 1 cli command “enable” action 2 cli command “guestshell run node_event.py -i 10 -e peerFail” exit exit
步骤1.使用IAM配置身份验证。
为了CSR1000v路由器更新AWS网络中的路由表,路由器需要进行身份验证。在AWS中,您必须创建允许CSR 1000v路由器访问路由表的策略。然后,将创建使用此策略并应用于EC2资源的IAM角色。
创建CSR 1000v EC2实例后,创建的IAM角色需要附加到每台路由器。
新IAM角色中使用的策略是:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "cloudwatch:", "s3:", "ec2:AssociateRouteTable", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DescribeRouteTables", "ec2:DescribeVpcs", "ec2:ReplaceRoute", "ec2:DescribeRegions", "ec2:DescribeNetworkInterfaces", "ec2:DisassociateRouteTable", "ec2:ReplaceRouteTableAssociation", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": "*" } ] }
注意:请参阅IAM角色与策略,并将其与VPC关联以了解详细步骤。
步骤2.安装HA python软件包。
[guestshell@guestshell ~]$ pip install csr_aws_ha --user [guestshell@guestshell ~]$ source ~/.bashrc
步骤3.在主路由器上配置HA参数。
[guestshell@guestshell ~]$ create_node.py -i 10 -t rtb-01c5b0633a3422575 -rg ca-central-1 -n eni-0bc1912748614df2a -r 0.0.0.0/0 -m primary
步骤4.在辅助路由器上配置HA参数。
[guestshell@guestshell ~]$ create_node.py -i 10 -t rtb-01c5b0633a3422575 -rg ca-central-1 -n eni-0e351ab1b8f416728 -r 0.0.0.0/0 -m secondary
create_node.py -i n -t rtb-private-route-table-id -rg region-id -n eni-CSR-id -r route(x.x.x.x/x) -m
注意:必须在GigabitEthernet1上配置面向外部的接口。 这是用于访问Azure API的接口。否则HA无法正常工作。在guestshell中,确保curl命令可以从Azure获取元数据。
[guestshell@guestshell ~]$ curl -H "Metadata:true" http://169.254.169.254/metadata/instance?api-version=2020-06-01
步骤1.必须使用Azure Active Directory(AAD)或托管服务身份(MSI)启用CSR1000v API调用的身份验证。 有关详细步骤,请参阅配置CSR1000v API调用的身份验证。 如果没有此步骤,CSR1000v路由器将无法授权更新路由表。
AAD参数
步骤2.安装HA python软件包。
[guestshell@guestshell ~]$ pip install csr_azure_ha --user [guestshell@guestshell ~]$ source ~/.bashrc
步骤3.在主路由器上配置HA参数(MSI或AAD可用于此步骤)。
[guestshell@guestshell ~]$ create_node -i 10 -p azure -s xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx -g ResourceGroup -t Private-RouteTable -r 0.0.0.0/0 -n 10.1.0.10 -m primary
[guestshell@guestshell ~]$ create_node -i 10 -p azure -s xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx -g ResourceGroup -t Private-RouteTable -r 0.0.0.0/0 -n 10.1.0.10 -m primary -a 1e0f69c3-b6aa-46cf-b5f9-xxxxxxxxx -d ae49849c-2622-4d45-b95e-xxxxxxxxx -k bDEN1k8batJqpeqjAuUvaUCZn5Md6rWEi=
步骤4.在辅助路由器上配置HA参数。
[guestshell@guestshell ~]$ create_node -i 10 -p azure -s xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx -g ResourceGroup -t Private-RouteTable -r 0.0.0.0/0 -n 10.1.0.11 -m secondary
[guestshell@guestshell ~]$ create_node -i 10 -p azure -s xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx --g ResourceGroup -t Private-RouteTable -r 0.0.0.0/0 -n 10.0.0.11 -m secondary -a 1e0f69c3-b6aa-46cf-b5f9-xxxxxxxxx -d ae49849c-2622-4d45-b95e-xxxxxxxxx -k bDEN1k8batJqpeqjAuUvaUCZn5Md6rWEi=
注意:确保与CSR 1000v路由器关联的服务帐户至少具有计算网络管理员权限。
步骤1.安装HA python软件包。
[guestshell@guestshell ~]$ pip install csr_gcp_ha --user [guestshell@guestshell ~]$ source ~/.bashrc
步骤2.在主路由器上配置HA参数。
[guestshell@guestshell ~]$ create_node -i 1 -g -r dest_network -o 200 -n nexthop_ip_addr -a route-vpc2-csr1 -b route-vpc2-csr2 -p gcp -v vpc_name
步骤3.在辅助路由器上配置HA参数。
[guestshell@guestshell ~]$ create_node -i 1 -g -r dest_network -o 200 -n nexthop_ip_addr -a route-vpc2-csr2 -b route-vpc2-csr1 -p gcp -v vpc_name
使用本部分可确认配置能否正常运行。
步骤1.使用node_event.py peerFail标志触发故障切换。
[guestshell@guestshell ~]$ node_event.py -i 10 -e peerFail 200: Node_event processed successfully
步骤2.导航至云提供商的私有路由表,验证路由是否已将下一跳更新为新的IP地址。
目前没有针对此配置的故障排除信息。