配置动态路由的注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置动态路由的注意事项相关的知识,希望对你有一定的参考价值。

动态路由随网络运行情况的变化而变化,路由器根据路由协议提供的功能自动计算数据传输的最佳路径,由此得到动态路由表动态路由指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。动态路由器上的路由表项是通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来;路由信息在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。动态路由器
动态路由器上的路由表项是通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。为了实现IP分组的高效寻路,IETF制定了多种寻路协议。其中用于自治系统(AS:Autonomous System)内部网关协议有开放式最短路径优先(OSPF:Open Shortest Path First)协议和寻路信息协议(RIP:Routing Information Protocol)。所谓自治系统是指在同一实体(如学校、企业或ISP)管理下的主机、路由器及其他网络设备的集合。还有用于自治域系统之间的外部网络路由协议BGP-4等。

路由软件
运行这些路由协议的软件就是我们通常说的路由软件,Linux下常见的路由软件有gated和zebra,。前者既有GPL版本的发行,又有收费的版本;而后者则是日本某组织开发的完全GPL的高效的路由软件。Linux的发行里面一般都缺省就有gated这个软件,我们下面主要介绍它的配置和使用方法。
参考技术A 软路由安装前的准备
  1、在欲设置为软路由的计算机中安装Windows2000Server。

  2、在欲设置为软路由的计算机中正确安装两块网卡。

  3、在欲设置为软路由的计算机中安装TCP/IP协议,并为两块网卡分别配置IP地址信息(例如,192.168.1.1/255.255.255.0和10.0.0.1/255.0.0.0),使两块网卡分别处于两个不同的IP网段。

  

  软路由的安装
  以域用户管理员的身份登录,并执行下述操作。

  1、依次单击“开始/程序/管理工具/路由和远程访问”,打开“路由和远程访问”窗口。

  2、单击“操作”菜单,选择“配置并启用路由和远程访问”命令,运行“路由和远程访问服务器安装向导”,单击[下一步]。

  3、由于我们在这里要安装的是路由器,所以,选择“网络路由器”选项,并单击[下一步]。

  4、通常情况下,局域网计算机中只安装TCP/IP协议和NetBEUI协议,而且只有TCP/IP协议拥有路由功能。AppleTalk协议仅用于苹果计算机之间的通讯。由于TCP/IP协议已经显示于“协议”列表之中,因此,选择“是,所有可用的协议都在列表上”选项,并单击[下一步]。

  5、本例中不安装远程访问服务,因此,选择“否”,不使用请求拨号访问远程网络。单击[下一步]。

  6、完成“路由和远程访问服务器安装向导”,单击[完成]。

  软路由安装注意事项
  1、Web界面的默认用户名是admin,密码是123456。

  2、安装成功后,默认会把第一块网卡设置为192.168.10.1,并启用DHCP服务。

  3、需要把另外一台电脑的IP设置为“自动获取IP”或者“静态IP192.168.10.x”。才可以打开Web界面。

  4、如果你不确定哪块网卡是内网,可以在控制台输入“1”查看内网的网卡和WebUI地址。
参考技术B 没啥,设置自动获取就可以了。

k8s istio 配置请求的路由规则

使用istio我们可以根据权重和HTTP headers来动态配置请求路由。

基于内容的路由

因为BookInfo示例部署了3个版本的评论微服务,我们需要设置一个默认路由。 否则,当你多次访问应用程序时,会注意到有时输出包含星级,有时候又没有。 这是因为没有明确的默认版本集,Istio将以随机方式将请求路由到服务的所有可用版本。

注意:假定您尚未设置任何路由。如果您已经为示例创建了冲突的路由规则,则需要在以下命令中使用replace而不是create。

下面这个例子能够根据网站的不同登陆用户,将流量划分到服务的不同版本和实例。跟kubernetes中的应用一样,所有的路由规则都是通过声明式的yaml配置。关于reviews:v1reviews:v2的唯一区别是,v1没有调用评分服务,productpage页面上不会显示评分星标。

  1. 将微服务的默认版本设置成v1。

    istioctl create -f samples/apps/bookinfo/route-rule-all-v1.yaml
    

    使用以下命令查看定义的路由规则。

    istioctl get route-rules -o yaml
    
    type: route-rule
    name: details-default
    namespace: default
    spec:
    destination: details.default.svc.cluster.local
    precedence: 1
    route:
    - tags:
        version: v1
    ---
    type: route-rule
    name: productpage-default
    namespace: default
    spec:
    destination: productpage.default.svc.cluster.local
    precedence: 1
    route:
    - tags:
        version: v1
    ---
    type: route-rule
    name: reviews-default
    namespace: default
    spec:
    destination: reviews.default.svc.cluster.local
    precedence: 1
    route:
    - tags:
        version: v1
    ---
    type: route-rule
    name: ratings-default
    namespace: default
    spec:
    destination: ratings.default.svc.cluster.local
    precedence: 1
    route:
    - tags:
        version: v1
    ---

     

    由于对代理的规则传播是异步的,因此在尝试访问应用程序之前,需要等待几秒钟才能将规则传播到所有pod。

  2. 在浏览器中打开BookInfo URL(http://$GATEWAY_URL/productpage ,我们在上一节中使用的是 http://ingress.istio.io/productpage )您应该会看到BookInfo应用程序的产品页面显示。 注意,产品页面上没有评分星,因为reviews:v1不访问评级服务。

  3. 将特定用户路由到reviews:v2

    为测试用户jason启用评分服务,将productpage的流量路由到reviews:v2实例上。

    istioctl create -f samples/apps/bookinfo/route-rule-reviews-test-v2.yaml
    

    确认规则生效:

    istioctl get route-rule reviews-test-v2
    destination: reviews.default.svc.cluster.local
    match:
      httpHeaders:
        cookie:
          regex: ^(.*?;)?(user=jason)(;.*)?$
    precedence: 2
    route:
    - tags:
        version: v2

     

  4. 使用jason用户登陆productpage页面。

    你可以看到每个刷新页面时,页面上都有一个1到5颗星的评级。如果你使用其他用户登陆的话,将因继续使用reviews:v1而看不到星标评分。

内部实现

在这个例子中,一开始使用istio将100%的流量发送到BookInfo服务的reviews:v1的实例上。然后又根据请求的header(例如用户的cookie)将流量选择性的发送到reviews:v2实例上。

验证了v2实例的功能后,就可以将全部用户的流量发送到v2实例上,或者逐步的迁移流量,如10%、20%直到100%。

如果你看了故障注入这一节,你会发现v2版本中有个bug,而在v3版本中修复了,你想将流量迁移到reviews:v1迁移到reviews:v3版本上,只需要运行如下命令:

  1. 将50%的流量从reviews:v1转移到reviews:v3上。

    istioctl replace -f samples/apps/bookinfo/route-rule-reviews-50-v3.yaml
    

    注意这次使用的是replace命令,而不是create,因为该rule已经在前面创建过了。

  2. 登出jason用户,或者删除测试规则,可以看到新的规则已经生效。

    删除测试规则。

    istioctl delete route-rule reviews-test-v2
    istioctl delete route-rule ratings-test-delay
    

    现在的规则就是刷新productpage页面,50%的概率看到红色星标的评论,50%的概率看不到星标。

    注意:因为使用Envoy sidecar的实现,你需要刷新页面很多次才能看到接近规则配置的概率分布,你可以将v3的概率修改为90%,这样刷新页面时,看到红色星标的概率更高。

  3. 当v3版本的微服务稳定以后,就可以将100%的流量分摊到reviews:v3上了。

    istioctl replace -f samples/apps/bookinfo/route-rule-reviews-v3.yaml
    

    现在不论你使用什么用户登陆productpage页面,你都可以看到带红色星标评分的评论了。

以上是关于配置动态路由的注意事项的主要内容,如果未能解决你的问题,请参考以下文章

实验三 静态路由与动态路由

如何静态路由配置?

基于LInux系统的路由综合实验

k8s istio 配置请求的路由规则

vue 动态路由 Get传值

vue前后分离动态路由和权限管理方案