精华内容
下载资源
问答
  • lotus node 远程节点 节点切换 钱包备份1,lotus和miner分离2,node1 钱包备份3,node2导入node1钱包4,node3 miner 设置环境变量调用node2区块 1,lotus和miner分离 主机名 运行 node1 lotus node2 lotus...

    1,lotus和miner分离

    主机名 运行
    node1 lotus
    node2 lotus
    node3 miner

    2,node1 钱包备份

    lotus wallet list
    
    lotus wallet balance
    
    • 导出钱包
    lotus wallet export t3... > /root/wallet.keyinfo
    
    • 验证钱包(可以不验证)
    # lotus-shed keyinfo info wallet.keyinfo
    bls t3...
    

    2.2 钱包备份control-0

    lotus wallet export f3... > /root/walletcontrol.keyinfo
    

    2.1 备份目录 lotus/keystore

    • 报错
    # lotus sync status
    ERROR: websocket: bad handshake
    

    3,node2导入node1钱包

    node1钱包地址作为node2默认钱包

    lotus wallet import --as-default=true wallet.keyinfo
    
    lotus wallet list
    
    lotus wallet balance
    
    • node2 身份验证令牌
    # lotus auth api-info --perm admin
    FULLNODE_API_INFO=ey...
    

    3.1 钱包备份control-0导入

    lotus wallet import walletcontrol.keyinfo
    

    4,node3 miner 设置环境变量调用node2区块

    • vim .bashrc
    # node1
    #export FULLNODE_API_INFO=ey...
    # node2
    export FULLNODE_API_INFO=ey...
    

    参考:

    1. 离线节点
    展开全文
  • openstack-neutron网络节点高可用

    千次阅读 2019-05-11 14:52:08
    网络节点:agent_mode = dvr_snat 该模式下南北流量统一走网络节点 网络节点数量:3 如何保证南北方向网络的高可用? Add the following to /etc/neutron/neutron.conf: [DEFAULT] core_plugin = ml2 service...

    前言

    在neutron支持DVR(分布式路由)后,东西向流量、绑定浮动IP的南北流量都可不再经过网络节点,这大大降低了网络节点的负担,但以下两类流量依然需要经过网络节点:

    1. 未绑定fip的南北流量
    2. 即使vm绑定了fip,但计算节点无外网网络(agent_mode = dvr_no_external)

    这两类流量都会影响到vm公网访问,必须要充分保障网络节点高可用

    实现原理

    网络节点的高可用主要通过keepalived和Router Redundancy Protocol (VRRP)协议实现主备路由间的切换,正常情况下由主(master)路由提供网络服务,在主路由上的keepalived会定期(如每隔5秒)向其他VRRP路由发送心跳数据包,当在一定时间内备(slave)路由上的keepalived未收到主(master)路由上的心跳数据包或主路由进入故障状态时,备(slave)路由会将主路由上的IP等信息配置到备路由的接口上,继续对外提供服务。

    说明
    如果存在多个备(slave)路由,keepalived会根据每个备(slave)路由上配置的优先级进行选择,如果优先级相同则选择IP地址最高的备路由
    心跳数据包使用的网络平面与配置的租户网络类型(tenant_network_types)有关,如vxlan
    

    架构图

    如下图所示,主备路由分布在两个网络节点上,心跳数据包通过vxlan网络(VNI101)

    在这里插入图片描述

    核心配置

    网络节点:/etc/neutron/neutron.conf:

    router_distributed = True 
    l3_ha = True(3层路由高可用)
    l3_ha_net_cidr = 169.254.192.0/18(心跳网络地址)
    max_l3_agents_per_router = 3
    min_l3_agents_per_router = 2
    

    网络节点:/etc/neutron/l3_agent.ini

    agent_mode = dvr_snat (设置为分布式路由南北流量snat的服务节点)
    ha_vrrp_auth_password = xxxxxx
    ha_vrrp_health_check_interval = 5 (vrrp心跳检测时间间隔)
    

    实验验证

    通过公网访问VM,验证主路由故障时的情形

    • 环境信息
    配置 说明
    网络节点 2个
    network-server1 网络节点1
    network-server2 网络节点2
    vm固定IP 192.168.2.156
    vm浮动IP 60.191.72.103
    • 主(master)路由节点信息
    [root@network-server1 ~]# ip netns exec snat-df301506-a68e-47b2-be3d-73a34b40b1bf ip a
    ...
    132: ha-cdd81756-b0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN qlen 1000
       link/ether fa:16:3e:e7:22:20 brd ff:ff:ff:ff:ff:ff
       inet 169.254.192.3/18 brd 169.254.255.255 scope global ha-cdd81756-b0
          valid_lft forever preferred_lft forever
       inet 169.254.0.1/24 scope global ha-cdd81756-b0
    133: sg-5579abe9-04: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN qlen 1000
       link/ether fa:16:3e:1a:5b:f7 brd ff:ff:ff:ff:ff:ff
       inet 192.168.2.159/24 scope global sg-5579abe9-04 
          valid_lft forever preferred_lft forever
       inet6 fe80::f816:3eff:fe1a:5bf7/64 scope link nodad 
          valid_lft forever preferred_lft forever
    134: qg-d807dcac-84: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000
       link/ether fa:16:3e:54:be:f4 brd ff:ff:ff:ff:ff:ff
       inet 60.191.72.103/32 scope global qg-d807dcac-84 (该地址为vm的fip地址)
          valid_lft forever preferred_lft forever
       inet 60.191.72.109/26 scope global qg-d807dcac-84 (该地址为路由网关地址)
          valid_lft forever preferred_lft forever
       inet6 fe80::f816:3eff:fe54:bef4/64 scope link 
          valid_lft forever preferred_lft forever
    

    解析:
    snat namespace为云内网络与外部网络的通道,需存在内、外部网络接口
    192.168.2.159/24:云内网络接口,访问外部网络时,云内网络网关(如192.168.1.1)收到数据包后会将数据包转发至网络节点该地址
    60.191.72.103/32:vm的fip地址
    60.191.72.109/26:无fip时snat地址

    • 备(slave)路由节点信息
    ...
    119: ha-c74f8508-af: <BROADCAST,MULTICAST> mtu 1450 qdisc noqueue state DOWN qlen 1000
       link/ether fa:16:3e:bf:f1:5a brd ff:ff:ff:ff:ff:ff
       inet 169.254.192.11/18 brd 169.254.255.255 scope global ha-c74f8508-af
          valid_lft forever preferred_lft forever
    120: sg-5579abe9-04: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN qlen 1000
       link/ether fa:16:3e:1a:5b:f7 brd ff:ff:ff:ff:ff:ff
    121: qg-d807dcac-84: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000
       link/ether fa:16:3e:54:be:f4 brd ff:ff:ff:ff:ff:ff
    

    解析:
    备(slave)路由节点snat namespace中仅存在心跳IP 169.254.192.11,当前不会提供路由服务

    • keepalived 信息
     953896 ?        S      0:00 /usr/bin/python2 /bin/neutron-keepalived-state-change --router_id=df301506-a68e-47b2-be3d-73a34b40b1bf --namespace=snat-df301506-a68e-47b2-be3d-73a34b40b1bf --conf_dir=/var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf --monitor_interface=ha-cdd81756-b0 --monitor_cidr=169.254.0.1/24 --pid_file=/var/lib/neutron/external/pids/df301506-a68e-47b2-be3d-73a34b40b1bf.monitor.pid --state_path=/var/lib/neutron --user=992 --group=989
    1061032 ?        Ss     0:04 keepalived -P -f /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/keepalived.conf -p /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf.pid -r /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf.pid-vrrp -D
    1061033 ?        S      0:19  \_ keepalived -P -f /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/keepalived.conf -p /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf.pid -r /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf.pid-vrrp -D
    

    解析:
    keepalived会启动一个进程监控该路由,配置文件为/var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/keepalived.conf ,该配置文件中详细配置了如健康检查脚本、优先级、切换时需要配置的ip、路由等网络信息

    [root@network-server1 df301506-a68e-47b2-be3d-73a34b40b1bf]# cat keepalived.conf 
    global_defs {
        notification_email_from neutron@openstack.local
        router_id neutron
    }
    
    vrrp_script ha_health_check_1 {
        script "/var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/ha_check_script_1.sh"
        interval 5
        fall 2
        rise 2
    }
    
    vrrp_instance VR_1 {
        state BACKUP
        interface ha-cdd81756-b0
        virtual_router_id 1
        priority 50
        garp_master_delay 60
        nopreempt
        advert_int 2
        authentication {
            auth_type PASS
            auth_pass xxxxxx
        }
        track_interface {
            ha-cdd81756-b0
        }
        virtual_ipaddress {
            169.254.0.1/24 dev ha-cdd81756-b0
        }
        virtual_ipaddress_excluded {
            192.168.2.159/24 dev sg-5579abe9-04
            60.191.72.103/32 dev qg-d807dcac-84
            60.191.72.109/26 dev qg-d807dcac-84
            fe80::f816:3eff:fe1a:5bf7/64 dev sg-5579abe9-04 scope link
            fe80::f816:3eff:fe54:bef4/64 dev qg-d807dcac-84 scope link
        }
        virtual_routes {
            0.0.0.0/0 via 60.191.72.65 dev qg-d807dcac-84
            124.160.117.64/26 dev qg-d807dcac-84 scope link
        }
        track_script {
            ha_health_check_1
        }
    }
    
    • 健康检查脚本

    keepalived配置文件中配置了健康检查脚本

    [root@network-server1]# cat /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/ha_check_script_1.sh
    #!/bin/bash -eu
    ip a | grep 192.168.2.159 || exit 0
    ping -c 1 -w 1 60.191.72.65 1>/dev/null || exit 1
    

    解析:
    ip a | grep 192.168.2.159 || exit 0 (如果找到这个IP地址继续执行程序,如果找不到这个IP则执行exit 0)
    ping -c 1 -w 1 60.191.72.65 1>/dev/null || exit 1 (如果无法ping通外部网关地址则执行exit 1)
    结合以上两个命令,当snat namespace中sg-5579abe9-04口配置了192.168.2.159口但无法ping通外部网关地址时,健康检查返回异常(exit 1)。

    • 触发故障

    通过移除外网网卡,验证网络连通性

    [root@network-server1 ~]# ovs-vsctl del-port br-bond2 bond2
    

    ping VM返回信息,中断约3秒钟

    来自 60.191.72.103 的回复: 字节=32 时间=12ms TTL=53
    来自 60.191.72.103 的回复: 字节=32 时间=5ms TTL=53
    请求超时。
    请求超时。
    请求超时。
    来自 60.191.72.103 的回复: 字节=32 时间=6ms TTL=53
    来自 60.191.72.103 的回复: 字节=32 时间=5ms TTL=53
    
    • 故障后主备路由

    keepalived切换日志

    May 25 15:03:55 network-server1 Keepalived_vrrp[982249]: /var/lib/neutron/ha_confs/e762fefa-ddc8-4d03-9f31-9f1c613d85a3/ha_check_script_1.sh exited with status 1
    May 25 15:03:56 network-server1 Keepalived_vrrp[987523]: /var/lib/neutron/ha_confs/949a39f7-e5d0-4e65-80d7-8a304969ad7b/ha_check_script_1.sh exited with status 1
    May 25 15:03:59 network-server1 Keepalived_vrrp[1061033]: /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/ha_check_script_1.sh exited with status 1
    May 25 15:04:00 network-server1 Keepalived_vrrp[982249]: /var/lib/neutron/ha_confs/e762fefa-ddc8-4d03-9f31-9f1c613d85a3/ha_check_script_1.sh exited with status 1
    May 25 15:04:00 network-server1 Keepalived_vrrp[982249]: VRRP_Script(ha_health_check_1) failed
    May 25 15:04:01 network-server1 Keepalived_vrrp[982249]: VRRP_Instance(VR_1) Entering FAULT STATE
    May 25 15:04:01 network-server1 Keepalived_vrrp[982249]: VRRP_Instance(VR_1) Now in FAULT state
    May 25 15:04:01 network-server1 Keepalived_vrrp[987523]: /var/lib/neutron/ha_confs/949a39f7-e5d0-4e65-80d7-8a304969ad7b/ha_check_script_1.sh exited with status 1
    May 25 15:04:01 network-server1 Keepalived_vrrp[987523]: VRRP_Script(ha_health_check_1) failed
    May 25 15:04:03 network-server1 Keepalived_vrrp[987523]: VRRP_Instance(VR_1) Entering FAULT STATE
    May 25 15:04:03 network-server1 Keepalived_vrrp[987523]: VRRP_Instance(VR_1) Now in FAULT state
    May 25 15:04:04 network-server1 Keepalived_vrrp[1061033]: /var/lib/neutron/ha_confs/df301506-a68e-47b2-be3d-73a34b40b1bf/ha_check_script_1.sh exited with status 1
    May 25 15:04:04 network-server1 Keepalived_vrrp[1061033]: VRRP_Script(ha_health_check_1) failed
    May 25 15:04:05 network-server1 Keepalived_vrrp[1061033]: VRRP_Instance(VR_1) Entering FAULT STATE
    May 25 15:04:05 network-server1 Keepalived_vrrp[1061033]: VRRP_Instance(VR_1) removing protocol Virtual Routes
    May 25 15:04:05 network-server1 Keepalived_vrrp[1061033]: VRRP_Instance(VR_1) removing protocol VIPs.
    May 25 15:04:05 network-server1 Keepalived_vrrp[1061033]: VRRP_Instance(VR_1) removing protocol E-VIPs.
    May 25 15:04:05 network-server1 Keepalived_vrrp[1061033]: VRRP_Instance(VR_1) Now in FAULT state
    

    解析:
    主路由健康检查异常,进入异常状态,此时备路由接管主路由工作,继续对外提供服务

    展开全文
  • 网络中心节点的选举算法

    千次阅读 2011-09-05 23:03:29
    在实际的网络仿真中经常会碰到类似的问题,设网络中有两种类型的节点,即服务节点和客户节点,服务节点为连接到本节点的用户节点提供服务,管理客户节点。客户节点受服务节点控制,在服务节点管理下正常运行。网络中...

             在多节点自组织网络中,有中心节点或簇头节点的选举问题。在实际的网络仿真中经常会碰到类似的问题,设网络中有两种类型的节点,即服务节点和客户节点,服务节点为连接到本节点的用户节点提供服务,管理客户节点。客户节点受服务节点控制,在服务节点管理下正常运行。网络中节点与节点之间存在着物理连接,可以进行互相通信。在服务节点出现故障的情况下,网络节点能自选举出一个新的服务节点,维系整个网络正常运行,要求新的服务节点能管理最大数目的客户节点。因此需要一种选举机制算法来处理该问题。

            我认为处理该问题的方法可以有两种方法,即主动选举和竞争选举。

            主动选举是采用同步全网广播的方式,各个节点根据广播的拓扑信息更新自己保持的网络拓扑信息,当出现服务节点发生故障时,即主动根据拓扑信息选举出下一个服务节点,被选举的用户节点切换为服务节点,其他用户节点连接到新服务节点。

            竞争选举是采用一种特殊令牌包Token方法在整个网络中轮转,收集各个节点的拓扑信息,最后具有最大连接数的节点竞争获得该令牌,即可成切换为服务节点,而Token的发出是基于一种可轮转的时间窗口的机制,每个节点都拥有一个唯一的时间窗口,当服务节点出现故障时,落在某个窗口,则由相应的窗口发出Token,如该窗口无对应节点,则轮转到下个窗口。

            比较两种机制,主动选举在服务节点出现故障时,要求大量的网络数据广播,进行同步更新全网节点的拓扑信息,该方法特点是选举时间短,但网络突发数据量大;而竞争选举是Token包在网络中轮转,直到选举出新服务节点,该方法特点是突发数据少,但需比较长的选举周期。从具体实现来讲,主动选举机制相对比较简单。

           下面以网络节点数目5为例,给出主动选举的算法代码,代码语言为C#。其中网络拓扑采用邻接矩阵的数据结构,主要的拓扑操作为:添加节点链接、删除节点、更新矩阵,删除指定节点的连通图,获取新服务节点,清空矩阵。


        public static class Topology
        {
    
            /// <summary>
            /// 定义网络拓扑的邻接矩阵(5*5矩阵)
            /// </summary>
            /// Matrix[0,0]、Matrix[1,1]...Matrix[4,4] 表示5个节点的类型
            ///(0为Client,1为Server,3为故障,便于做位或运算)
            /// Matrix[0,1]表示 节点1与节点2的链接状态(1为有光纤连接,0为没光纤连接)
            public static int[,] Matrix = { 
                                                  { 0, 0, 0, 0, 0 }, 
                                                  { 0, 0, 0, 0, 0 }, 
                                                  { 0, 0, 0, 0, 0 }, 
                                                  { 0, 0, 0, 0, 0 }, 
                                                  { 0, 0, 0, 0, 0 },
                                        };
    
            public const int CLIENT = 0;
            public const int SERVER = 1;
            public const int FAULT = 3;
    
            public const int CONN = 1;
            public const int DISC = 0;
    
            /// <summary>
            /// 根据节点标识获取序列号
            /// </summary>
            /// <param name="id">标识</param>
            /// <returns>序列号</returns>
            public static int getNodeSN(string id)
            {
                int s;
                switch (id)
                {
                    case "Node01": s = 0; break;
                    case "Node02": s = 1; break;
                    case "Node03": s = 2; break;
                    case "Node04": s = 3; break;
                    case "Node05": s = 4; break;
                    default: s = -1; break;
                }
                return s;
            }
    
            public static string getNodeID(int sn)
            {
                string id;
                switch (sn)
                {
                    case 0: id = "Node01"; break;
                    case 1: id = "Node02"; break;
                    case 2: id = "Node03"; break;
                    case 3: id = "Node04"; break;
                    case 4: id = "Node05"; break;
                    default: id = null; break;
                }
                return id;
            }
    
            public static bool IsNoServer()
            {
                for (int i = 0; i < 5; i++)
                {
                    if (Topology.Matrix[i, i] == SERVER)
                    {
                        return false;
                    }
                }
                return true;         
            }
    
            /// <summary>
            /// 向拓扑邻接矩阵添加节点的连接
            /// </summary>
            /// <param name="node1">节点1标识</param>
            /// <param name="node2">节点2标识</param>
            public static void SaveNodeConn(string node1, string node2)
            {
                int sn1, sn2;
                sn1 = Topology.getNodeSN(node1);
                sn2 = Topology.getNodeSN(node2);
                Topology.Matrix[sn1, sn2] = Topology.Matrix[sn2, sn1] = CONN;
            }
    
            /// <summary>
            /// 向拓扑邻接矩阵设置节点为故障
            /// </summary>
            /// <param name="node"></param>
            public static void SetNodeFault(string node)
            {
                int sn = Topology.getNodeSN(node);
    
                for (int i = 0; i < 5; i++)
                {
                    Topology.Matrix[sn, i] = DISC;
                    Topology.Matrix[i, sn] = DISC;
                }
                Topology.Matrix[sn, sn] = FAULT;
            }
    
            /// <summary>
            /// 与拓扑邻接矩阵做或运算,更新拓扑邻接矩阵
            /// </summary>
            /// <param name="matrix">矩阵</param>
            /// <returns>运算后的拓扑邻接矩阵</returns>
            public static int[,] MatrixOR(int[,] matrix)
            {
                for (int i = 0; i < 5; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        Topology.Matrix[i, j] |= matrix[i, j];
                    }
                }
                return Topology.Matrix;
            }
    
            /// <summary>
            /// 矩阵或运算,取并集
            /// </summary>
            /// <param name="matrix1">矩阵1</param>
            /// <param name="matrix2">矩阵2</param>
            /// <returns>运算后的矩阵</returns>
            public static int[,] MatrixOR(int[,] matrix1, int[,] matrix2)
            {
                int[,] matrix = new int[5, 5];
                for (int i = 0; i < 5; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        matrix[i, j] = matrix1[i, j] | matrix2[i, j];
                    }
                }
                return matrix;
            }
    
            /// <summary>
            /// 更新本节点的拓扑邻接矩阵
            /// </summary>
            /// <param name="matrix"></param>
            /// <returns></returns>
            public static int[,] UpdateMatrix(int[,] matrix)
            {
                int i, j;
    
                Topology.MatrixOR(matrix);
    
                for (i = 0; i < 5; i++)
                {
                    if (Topology.Matrix[i, i] == FAULT)
                    {
                        for (j = 0; j < 5; j++)
                        {
                            Topology.Matrix[i, j] = DISC;
                            Topology.Matrix[j, i] = DISC;
                        }
                        Topology.Matrix[i, i] = FAULT;
                    }
                }
                return Topology.Matrix;
            }
    
            //删除连通图的递归算法
            public static void DeleteConn(int[,] matrix, int cur, int pre)
            {
                int i, j;
                for (i = 0; i < 5; i++)
                {
                    if (i == cur || i <= pre) continue;         
                    if (matrix[cur, i] == CONN)
                    {
                        DeleteConn(matrix, i, cur);
                    }     
                }
                for (j = 0; j < 5; j++)
                {
                    if (cur == j) continue;
                    matrix[cur, j] = DISC;
                    matrix[j, cur] = DISC;
                }
            }
    
            /// <summary>
            /// 根据拓扑与本节点查找新的Server
            /// </summary>
            /// <param name="matrix"></param>
            /// <param name="node"></param>
            /// <returns></returns>
            public static string GetNewServer(int[,] matrix, string node)
            {
                int i, j;
                int[] ConnCount = { 0, 0, 0, 0, 0 };
                int max = 0, sn = 0;
    
                //计算各个节点的连接数,并取到最大连接数的节点SN号
                for (i = 0; i < 5; i++)
                {
                    for (j = 0; j < 5; j++)
                    {
                        if (i == j) continue;
                        if (matrix[i, j] == CONN) ConnCount[i]++;
                    }
                    if (ConnCount[i] > max)
                    {
                        max = ConnCount[i];
                        sn = i;
                    }
                }
                //检测最大连接数的节点是否与本节点有连接或为本节点,是则为Server
                if (matrix[sn, getNodeSN(node)] == CONN || sn == getNodeSN(node))
                {
                    matrix[sn, sn] = SERVER;
                    return getNodeID(sn);
                }
    
                int[,] matrix1 = matrix;
    
                //删除最大连接数所在的连通图
                DeleteConn(matrix1, sn, 0);
    
                bool flag = false;
                //检查是否已经为空
                for (i = 0; i < 5; i++)
                {
                    for (j = 0; j < 5; j++)
                    {
                        if (i == j) continue;
                        if (matrix1[i, j] == CONN)
                        {
                            flag = true;
                            break;
                        }
                    }
                    if (flag) break;
                }
    
                if (flag)
                    return GetNewServer(matrix1, node);
                else
                    return null;
            }
    
            /// <summary>
            /// 矩阵清零
            /// </summary>
            public static void MatrixReset()
            {
                int i,j;
                for (i = 0; i < 5; i++)
                {
                    for (j = 0; j < 5; j++)
                    {
                        if (i != j)
                            Topology.Matrix[i, j] = 0;
                    }
                }
            }
        }
    

    转载本文请注明出处:http://blog.csdn.net/wzywzy12/article/details/6751490

     

    展开全文
  • 出现这类问题多是由于相应节点没有挂载公共磁盘(所有节点都可以访问),而集群中的用户目录都在公共磁盘上,导致切换时出现错误。例如如下,切换node41时出现下面问题查看挂载情况:我的用户目录在/public/users/...

    出现这类问题多是由于相应节点没有挂载公共磁盘(所有节点都可以访问),而集群中的用户目录都在公共磁盘上,导致切换时出现错误。

    例如如下,切换node41时出现下面问题

    查看挂载情况:

    我的用户目录在/public/users/yexin,显然没有

    用root用户切换到node41(注意一半普通用户不能切换但是root而已,是因为root用户在各个机器上有自己的目录在/root下,无需公共磁盘,ssh node切换只要内网配置好,又挂载好公共磁盘就能成功)

    一般执行如下命令就可以挂载,但是网络问题回到挂载失败。rc.local文件里是挂载命令

    还是无法挂载,按照上面所说的,就是网络有问题。

    解决办法:

    切换到node100主节点

    /etc/init.d/opensmd status    ------查看网络状态

    /etc/init.d/opensmd restart   ------ 重启网络就好了

    接着再重新挂载


    该命令是采用for循环,对41—48节点运行source /etc/rc.local -------rc.local文件里是挂载命令

    用root执行

    for i in `seq 41 48`;do ssh node$i "source /etc/rc.local";done









    展开全文
  • 生成网络节点拓扑场景

    千次阅读 2010-11-26 15:39:00
    通过对1000*1000的leach.alive分析可以看出,在time=81s的时候,此时网络中仅有4个存活的节点。 0.000000 100 10.000000 91 20.000000 83 30.000000 67 40.000000 67 50.000000 34 60.000000 26 70....
  • Zookeeper 05 示例代码-主备节点切换

    千次阅读 2015-06-18 15:41:31
    主备节点切换,是分布式应用的基本要求。现在用 Zookeeper 实现主备节点自动切换功能。 基本思路: 1 多个服务启动后,都尝试在 Zookeeper中创建一个 EPHEMERAL 类型的节点,Zookeeper本身会保证,只有一个...
  • VoLTE网络节点功能介绍

    千次阅读 2019-07-23 08:49:46
    1 VoLTE网络节点功能介绍 1.1 S-CSCF S-CSCF是IMS的核心所在,它位于归属网络,为UE进行会话控制和注册请求,但当UE处于会话中 时,S-CSCF处理网络中的会话状态。在同一个运营商的网络中,可以有多个S-CSCF。S-...
  • 容器启动之后,需要围绕peer节点进行以下操作: 创建通道(只需操作一次) 将所有组织的所有节点加入到通道中 给所有的peer节点安装链码 链码初始化(只需初始化一次,数据会自动同步到其它节点) 链码调用 进入容器 ...
  • ROS节点

    千次阅读 2019-12-28 16:25:22
    ROS节点介绍 在ROS的世界里,最小的进程单元就是节点(node) 一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点 从程序角度来说,node就是一个可执行...
  • 注册测试节点 ... ... ... ...登录到页面中,创建项目,就可以得到测试节点的链接。...切换到测试账号 ...修改 utils/web3helper.js 切换到测试节点 const Web3 = require('web3'); module.exports = { getWeb...
  • Gephi 网络可视化——设置节点颜色

    千次阅读 2019-12-04 22:35:05
    Gephi 网络可视化——调整节点大小 Gephi 网络可视化——设置节点颜色 承接上一篇文章: Gephi 网络可视化——调整节点大小 终于到了最后关键的一步,给网络上色! 如果你动手实践了前几篇文章,那么...
  • 隐藏节点指在接收节点的覆盖范围内而在发送节点的覆盖范围外的节点。 由于听不到 发送节点的发送,隐藏节点可能向相同的接收节点发送分组,导致分组在接收节点处冲突。 隐藏节点可以分为隐发送节点和隐接收节点。 如...
  • 实验名称:两个移动节点网络连接及协议性能分析 实验日期:2015年3月9日~2015年3月14日 实验报告日期:2015年3月15日   一、实验环境(网络平台,操作系统,网络拓扑图) 运行平台:虚拟机VMwareWorkstation11.0 ...
  • 为了使客户端在节点失效自动切换后能继续平稳工作,我们需要告诉客户端所有主节点的连接信息,包括当前主节点和其它所有能接替主节点的候选节点;通过下面的 SQL 语句可以获取所有符合条件的主机名:   ...
  • HPB开发节点搭建指南

    万次阅读 2019-04-16 09:38:58
    导读: 社区开发者在开发HPB DAPP的时候首先面临的就是如何接入HPB主网的问题,本文介绍了开发者节点的搭建过程,本文基于Ubuntu 16.04搭建,开发节点相当于轻节点,可发起交易,进行区块同步,但不能进入候选节点、...
  • 打开 imToken 并切换到 ETH 钱包,通过「我」-「使用设置」-「节点设置」-「ETHEREUM」进入 ETH 钱包节点设置页面。目前 imToken 支持两种添加自定义节点的方式...
  • 在构建多节点私有链网络时,遇到了诸多问题,首先是因为授课时,老师需要在A,B两台电脑之间切换,所以导致看的很吃力。还有我是在两台电脑上构建的2个节点,虽然方法没错,但是节点的添加是失效的,所以,一定要在...
  • 切换是“先切换,后断开”,移动节点只有在取得了与新基站的链接之后,才会中断与原基站的联系,因此在切换过程中没有中断,不会影响通话质量;软切换由于是在频率相同的基站间进行,在两基站或多基站覆盖区的交界...
  • NEO节点部署问题

    2018-06-10 23:32:17
    在部署NEO节点过程中遇到如下几个问题,这些问题已经有了结果。1.NEO节点日志目录(neo-cli/ApplicationLogs...文件名是在 config.json 中定义的,下划线后面是网络编号,用来区分主网、测试网、私链的,网络编号在...
  • 为了使客户端在节点失效自动切换后能继续平稳工作,我们需要告诉客户端所有主节点的连接信息,包括当前主节点和其它所有能接替主节点的候选节点;通过下面的 SQL 语句可以获取所有符合条件的主机名:   ...
  • [MCGC] Grand Theft Auto V 网络优化器写在前面■■■ 使用说明 ■■■[错误]该目录没有资料库文件,或资料库文件被占用■■■ 异常情况须知 ■■■ 写在前面 软件版本:2.0.1.19 公测版 若网络是移动铁通,优化...
  • 区块链轻节点执行交易

    万次阅读 2019-03-14 09:31:42
    轻量级演算可以用于跨链过程中演算和验证其它链交易、可以用于多链中不同链验证节点随机洗牌后切换节点、可以用于快速同步其它链数据、可以用于主-子链结构中,子链节点作恶没法演算子链节点数据问题等。 轻量级...
  • 1.检查系统设置里时间,重新同步当前时间。 2.订阅节点规则转换是否正常。 3.重启客户端。
  • EOSTestnet单主机多节点

    千次阅读 2018-04-20 10:39:08
    本教程介绍如何设置在单个主机上运行的多节点区块链配置。...下图描述了所需的测试网络配置。 打开四个“终端”窗口来执行本教程中的步骤。 1、启动电子钱包管理器 cd /data/eos/build root@no...
  • kubernetes的node 节点管理

    千次阅读 2018-07-10 17:45:34
    node是kubernetes集群中的工作节点,可以是虚拟机也可以是物理机。node节点上运行一些服务用来运行pod以及与master通信等。一个node上的服务包括docker运行时环境、kubelet、kube-proxy以及其它一些可选的add-ons。...
  • 这篇博客介绍一下go-ethereum全节点的两种启动模式:主网络快速启动和测试网络快速启动。这也是客户端所提供的两种启动方式,直接拿来使用即可。下面具体介绍一下使用方法。主网络快速启动其实,我们大多数人再使用...
  • CANopen之LSS Node-ID节点管理

    千次阅读 2020-05-13 00:07:42
    这里写目录标题1.区分CAN-ID和节点ID2....ID)协议3.5.2 存储配置协议3.6 多节点配置(Multipe Node Address)3.6.1 LSS地址3.6.2 切换选中节点状态协议3.7 LSS地址查询协议3.7.1 查询Vendor-ID标识协议3.7.
  • CAN笔记(19) 网络管理

    万次阅读 2019-09-11 10:45:18
    网络管理、节点状态、节点上线报文、心跳报文、节点守护、节点状态切换命令、主站设备
  • Polkadot验证节点的安全性和可用性

    万次阅读 2019-05-16 18:29:45
    在本文中,我将在验证节点的安全性和可用性方面讨论两个主题。我知道,这里介绍的技巧仅仅涵盖了POS验证节点的“安全性和可用性”冰山一角。不过,我发现它们对于您的测试实例提供最小的安全性和可用性是有用的。 ...
  • 一、重新启动集群节点 要重新启动集群节点,请关闭MySQL并重新启动它。该节点将离开集群(并且法定人数的总计数应该减少)。发布命令 systemctl restart mysql 当它重新加入时,节点应该使用IST进行同步。如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,558
精华内容 53,023
关键字:

切换网络节点