本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文檔介紹如何在Amazon AWS雲上部署CSR1000v路由器以實現高可用性的配置指南。其目的是讓使用者實際瞭解HA並有能力部署一個功能完整的測試平台。
有關AWS和HA的更多深入背景,請參閱一節。
思科建議您瞭解以下主題:
本檔案中的資訊是根據Cisco IOS-XE® Denali 16.7.1。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
在多可用區環境中,模擬從專用資料中心(VM)到Internet的連續流量。模擬HA容錯移轉,並觀察HA是否成功,因為路由表已確認從CSRHA到CSRHA1的專用介面的流量。
在配置開始之前,必須完全瞭解拓撲和設計。這有助於排除以後可能出現的問題。
有多種基於網路要求的HA部署方案。在本示例中,使用以下設定配置HA冗餘:
一個HA對中有2台CSR1000v路由器,位於兩個不同的可用區中。將每個可用區視為獨立的資料中心,以實現額外的硬體恢復能力。
第三個區域是虛擬機器,用於模擬專用資料中心中的裝置。目前,通過上的公共介面啟用了Internet訪問,以便您可以訪問和配置VM。通常,所有正常流量都應通過專用路由表。
在CSRHA 8.8.8.8上對VM的→用介面Ping→專用→由表,以進行流量模擬。在故障轉移場景中,觀察私有路由表已將路由交換為指向CSRHA1的私有介面。
RTB — 路由表ID。
CIDR — 要在路由表中更新的路由的目標地址。
ENI — 將流量路由到的CSR 1000v gigabit介面的網路介面ID。
例如,如果CSRHA發生故障,則CSRHA1會接管並更新AWS路由表中的路由,使其指向自己的ENI。
區域 — CSR 1000v的AWS區域。
一般配置流程是從最頂層的功能(區域/VPC)開始,然後向下移動到最具體的功能(介面/子網)。 但是,沒有特定的配置順序。開始之前,首先瞭解拓撲非常重要。
提示:為您的所有設定(VPC、介面、子網、路由表等)指定名稱。
本示例使用US West(Oregon)。
安全組類似於允許或拒絕流量的ACL。
IAM授予您的CSR訪問Amazon API的許可權。
CSR1000v用作代理,以呼叫AWS API命令來修改路由表。預設情況下,不允許AMI訪問API。此過程將建立IAM角色,並在CSR例項啟動期間使用此角色。IAM為CSR提供使用和修改AWS API的訪問憑證。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateRouteTable", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DescribeRouteTables", "ec2:DescribeVpcs", "ec2:ReplaceRoute", "ec2:DisassociateRouteTable", "ec2:ReplaceRouteTableAssociation" ], "Resource": "*" } ] }
每個CSR1000v路由器有2個介面(1個公共介面,1個專用介面),並位於自己的可用區中。您可以將每個CSR視為位於單獨的資料中心中。
附註:在此下拉選單中不會顯示上一步建立的子網。您可能需要刷新或取消該頁,然後重新開始才能顯示子網。
附註:如果您丟失了私鑰,則無法再次登入您的CSR。沒有方法恢復金鑰。
附註:公共術語/私人術語可能會在這裡混淆您。在本示例中,公共介面的定義是Eth0,即面向網際網路的介面。從AWS的角度來看,我們的公共介面是他們的私有IP。
預設情況下,所有ENI都啟用此源/目標檢查。一種反欺騙功能,旨在通過在轉發流量之前驗證ENI是流量的目的地,從而避免讓ENI出現並非真正針對它的流量。路由器很少是資料包的實際目的地。必須在所有CSR傳輸ENI上禁用此功能,否則它無法轉發資料包。
附註:通過SSH連線到CSR1000v的AWS提供的使用者名稱可能錯誤地列為root。如果需要,請將其更改為ec2-user。
附註:在中必須能夠對DNS地址執行SSH執行ping操作。此處為ec2-54-208-234-64.compute-1.amazonaws.com。檢查路由器的公共子網/埃尼是否與公共路由表關聯。請簡要轉到步驟8,瞭解如何將子網與路由表相關聯。
公共子網: 10.16.1.0/24
專用子網:10.16.5.0/24
如果無法ping通這個新AMI的彈性IP地址,請簡要轉到步驟8,並確保公用子網與公用路由表關聯。
在本示例中,請使用Ubuntu Server 14.04 LTS。
公共子網: 10.16.2.0/24
專用子網:10.16.6.0/24
如果無法ping通這個新AMI的彈性IP地址,請簡要轉到步驟8,並確保公用子網與公用路由表關聯。
ubuntu@ip-10-16-2-139:~$ cd /etc/network/interfaces.d/ ubuntu@ip-10-16-2-139:/etc/network/interfaces.d$ sudo vi eth1.cfg auto eth1 iface eth1 inet static address 10.16.6.131 netmask 255.255.255.0 network 10.16.6.0 up route add -host 8.8.8.8 gw 10.16.6.1 dev eth1
ubuntu@ip-10-16-2-139:/etc/network/interfaces.d$ sudo ifdown eth1 && sudo ifup eth1 ubuntu@ip-10-16-2-139:/etc/network/interfaces.d$ sudo reboot
ubuntu@ip-10-16-2-139:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.16.2.1 0.0.0.0 UG 0 0 0 eth0 8.8.8.8 10.16.6.1 255.255.255.255 UGH 0 0 0 eth1 <-------------- 10.16.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.16.6.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
如果未在表中列出8.8.8.8,請手動新增:
ubuntu@ip-10-16-2-139:~$ sudo route add -host 8.8.8.8 gw 10.16.6.1 dev eth1
3個公共介面與公共路由表關聯:
公共子網:10.16.0.0/24, 10.16.1.0/24, 10.16.2.0/24
3個專用介面與專用路由表關聯:
專用子網:10.16.4.0/24、10.16.5.0/24、10.16.6.0/24
透過CSR 1000v的彈性IP設定通用路由封裝(GRE)通道(建議避免偵測false失敗的DHCP租約續約問題。) 如果需要更快的收斂,則雙向轉發檢測(BFD)值可以配置為比本示例所示值更積極。但是,這可能會導致在間歇性連線期間發生BFD對等體關閉事件。此示例中的值在1.5秒內檢測對等體故障。在執行AWS API命令的時間和VPC路由表更改生效的時間之間,存在大約幾秒的可變延遲。
GRE和BFD — 用於觀察HA故障轉移的條件
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 52.10.183.185 /* Elastic IP of the peer CSR */ ! router eigrp 1 bfd interface Tunnel1 network 192.168.1.0 passive-interface GigabitEthernet1
NAT和路由 — 用於通過專用介面實現虛擬機器網際網路可達性
interface GigabitEthernet1 ip address dhcp ip nat outside no shutdown ! interface GigabitEthernet2 ip address dhcp ip nat inside no shutdown ! ip nat inside source list 10 interface GigabitEthernet1 overload ! access-list 10 permit 10.16.6.0 0.0.0.255 ! ip route 10.16.6.0 255.255.255.0 GigabitEthernet2 10.16.4.1
GRE和BFD — 用於觀察HA故障轉移的條件
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 50.112.227.77 /* Elastic IP of the peer CSR */ ! router eigrp 1 bfd interface Tunnel1 network 192.168.1.0 passive-interface GigabitEthernet1
NAT和路由 — 用於通過專用介面實現虛擬機器網際網路可達性
interface GigabitEthernet1 ip address dhcp ip nat outside no shutdown ! interface GigabitEthernet2 ip address dhcp ip nat inside no shutdown ! ip nat inside source list 10 interface GigabitEthernet1 overload ! access-list 10 permit 10.16.6.0 0.0.0.255 ! ip route 10.16.6.0 255.255.255.0 GigabitEthernet2 10.16.5.1
使用下面指定的雲提供商aws命令配置每個CSR 1000v,監控BFD對等體關閉事件。在檢測到AWS HA錯誤(例如BFD對等體關閉)後,使用此命令定義對(VPC)Route-table-id、Network-interface-id和CIDR的路由更改。
CSR(config)# redundancy CSR(config-red)# cloud provider [aws | azure] node-id # bfd peer ipaddr # route-table table-name # cidr ip ipaddr/prefix # eni elastic-network-intf-name # region region-name
CSRHA#show bfd neighbors IPv4 Sessions NeighAddr LD/RD RH/RS State Int 192.168.1.2 4097/4097 Up Up Tu1
CSRHA上的冗餘配置示例
redundancy cloud provider aws 1 bfd peer 192.168.1.2 route-table rtb-ec081d94 cidr ip 8.8.8.8/32 eni eni-90b500a8 region us-west-2
CSRHA1上的冗餘配置示例
redundancy cloud provider aws 1 bfd peer 192.168.1.1 route-table rtb-ec081d94 cidr ip 8.8.8.8/32 eni eni-10e3a018 region us-west-2
CSRHA#show bfd nei IPv4 Sessions NeighAddr LD/RD RH/RS State Int 192.168.1.2 4097/4097 Up Up Tu1 CSRHA#show ip eigrp neighbors EIGRP-IPv4 Neighbors for AS(1) H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 192.168.1.2 Tu1 12 00:11:57 1 1470 0 2
CSRHA#show redundancy cloud provider aws 1 Cloud HA: work_in_progress=FALSE Provider : AWS node 1 State : idle BFD peer = 192.168.1.2 BFD intf = Tunnel1 route-table = rtb-ec081d94 cidr = 8.8.8.8/32 eni = eni-90b500a8 region = us-west-2
ubuntu@ip-10-16-3-139:~$ ping -I eth1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) from 10.16.6.131 eth1: 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=1.60 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=50 time=1.62 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=50 time=1.57 ms
CSRHA(config)#int Tun1 CSRHA(config-if)#shut
show redundancy cloud provider [aws | azure] node-id debug redundancy cloud [all | trace | detail | error] debug ip http all
解析度:Http用於從CSR向AWS傳送API呼叫。確保DNS可以解析例項中列出的DNS名稱。確保http流量未被阻止。
*May 30 20:08:06.922: %VXE_CLOUD_HA-3-FAILED: VXE Cloud HA BFD state transitioned, AWS node 1 event httpc_send_request failed *May 30 20:08:06.922: CLOUD-HA : AWS node 1 httpc_send_request failed (0x12) URL=http://ec2.us-east-2b.amazonaws.com
解析度:不同網路中的區域名稱和ENI配置不正確。區域和ENI應與路由器位於同一區域。
*May 30 23:38:09.141: CLOUD-HA : res content iov_len=284 iov_base=<?xml version="1.0" encoding="UTF-8"?> <Response><Errors><Error><Code>InvalidParameterValue</Code><Message>route table rtb-9c0000f4 and interface eni-32791318 belong to different networks</Message></Error></Errors><RequestID>af3f228c-d5d8-4b23-b22c-f6ad999e70bd</RequestID></Response>
解析度:IAM JSON角色/策略建立錯誤或未應用於CSR。IAM角色授權CSR進行API呼叫。
*May 30 22:22:46.437: CLOUD-HA : res content iov_len=895 iov_base=<?xml version="1.0" encoding="UTF-8"?> <Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not authorized to perform this operation. Encoded
authorization failure message: qYvEB4MUdOB8m2itSteRgnOuslAaxhAbDph5qGRJkjJbrESajbmF5HWUR-MmHYeRAlpKZ3Jg_y-_tMlYel5l_ws8Jd9q2W8YDXBl3uXQqfW_cjjrgy9jhnGY0nOaNu65aLpfqui8kS_4RPOpm5grRFfo99-8uv_N3mYaBqKFPn3vUcSYKBmxFIIkJKcjY9esOeLIOWDcnYGGu6AGGMoMxWDtk0K8nwk4IjLDcnd2cDXeENS45w1PqzKGPsHv3wD28TS5xRjIrPXYrT18UpV6lLA_09Oh4737VncQKfzbz4tPpnAkoW0mJLQ1vDpPmNvHUpEng8KrGWYNfbfemoDtWqIdABfaLLLmh4saNtnQ_OMBoTi4toBLEb2BNdMkl1UVBIxqTqdFUVRS**MSG 00041 TRUNCATED** **MSG 00041 CONTINUATION #01**qLosAb5Yx0DrOsLSQwzS95VGvQM_n87LBHYbAWWhqWj3UfP_zmiak7dlm9P41mFCucEB3Cs4FRsFtb-9q44VtyQJaS2sU2nhGe3x4uGEsl7F1pNv5vhVeYOZB3tbOfbV1_Y4trZwYPFgLKgBShZp-WNmUKUJsKc1-6KGqmp7519imvh66JgwgmU9DT_qAZ-jEjkqWjBrxg6krw</Message></Error></Errors><RequestID>4cf31249-2a6e-4414-ae8d-6fb825b0f398</RequestID></Response>