LVS高性能高可用:TCP socket bind failed. Reschedu....

图片说明

以下是代理机的配置:

1、yum -y install keepalived

2、> /etc/keepalived/keepalived.conf

3、vi /etc/keepalived/keepalived.conf


global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface ens32 # 虚拟ip所在的网卡
    virtual_router_id 51 # 标识ID,请务必保证内网唯一性,和备机必须一致!
    priority 100 # 权重需比备机高
    advert_int 1 # 主备检测间隔 

    # 主备通信密码,必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.43.200 # 多个需换行填写 
    }
}

virtual_server 192.168.43.200 8080 {
    delay_loop 6 # 每隔6秒检测Realserver健康状况
    lb_algo rr
    lb_kind DR #  采用DR模式,即直接路由,其他还有TUN和NAT两种模式
    nat_mask 255.255.255.0
    persistence_timeout 1 #  #会话保持时间,相当于session 保持时间
    protocol TCP

    real_server 192.168.43.31 8080 {  # 第一个realserver,请注意80和后面 { 之间有个空格!
        weight 1 # 权重
       TCP_CHECK {
            connect_timeout 10 # 超时10秒,则失败 
            nb_get_retry 3 # 失败重试次数
            delay_before_retry 3 # 重试间隔时间 
       }
    }

    real_server 192.168.43.32 8080 {
        weight 1
       TCP_CHECK {
            connect_timeout 10 # 超时10秒,则失败 
            nb_get_retry 3 # 失败重试次数
            delay_before_retry 3 # 重试间隔时间 
       }
    }
}

4、
启动服务
systemctl start keepalived.service

# 问题描述:

可以实现转发,但无法实现负载均衡和故障转移

2个回答

卸载通过yum安装的keepalived,通过官网新版本的源码自行编译安装

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
LVS+Keepalived 实现socket连接,RS断了不会自动切换
VIP:192.168.0.21 LBServer:192.168.0.20(暂时只有一台) RS1:192.168.0.79(window) RS2:192.168.0.80(window) socket 端口60001 我使用socket client测试连接VIP成功,能分配在两个节点上,我用的是rr RD模式。但是关掉一个阶段上的socket server后,client不会重连下个节点。而且创建新的client的时候连接失败,我猜测应该是还在连断掉的那个节点。 我用测试工具Sockettool新建的client,socket server 是自己写程序。 以下是keepalived.conf信息 global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface ens32 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.21 } } virtual_server 192.168.0.21 60001 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 7500 protocol TCP real_server 192.168.0.80 60001 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 60001 } } real_server 192.168.0.81 60001 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 60001 } } }
使用lvs配置的k8s master,k8s node要用虚拟ip访问master应该如何配置
master配置如下10.29.9.120: /usr/bin/kube-apiserver --logtostderr=true --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction --advertise-address=192.168.200.200 --bind-address=192.168.200.200 --insecure-bind-address=127.0.0.1 --authorization-mode=Node,RBAC --runtime-config=rbac.authorization.k8s.io/v1alpha1 --kubelet-https=true --enable-bootstrap-token-auth --token-auth-file=/etc/kubernetes/token.csv --service-cluster-ip-range=10.254.0.0/16 --service-node-port-range=8400-10000 --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem --client-ca-file=/etc/kubernetes/ssl/ca.pem --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem --etcd-cafile=/etc/kubernetes/ssl/ca.pem --etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem --etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem --etcd-servers=https://10.29.9.120:2379,https://10.29.42.4:2379,https://10.29.22.137:2379 --enable-swagger-ui=true --allow-privileged=true --apiserver-count=3 --audit-log-maxage=30 --audit-log-maxbackup=3 --audit-log-maxsize=100 --audit-log-path=/var/lib/audit.log --event-ttl=1h --v=2 inet 192.168.200.200/32 scope global lo:15 valid_lft forever preferred_lft forever 虚拟服务器配置如下10.29.20.22: IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.200.200:80 rr TCP 192.168.200.200:6443 wrr 其他的k8s node应该怎么配置? 现在报错如下: May 30 16:32:22 shaphicprd03491 kubelet[27731]: I0530 16:32:22.567808 27731 bootstrap.go:239] Failed to connect to apiserver: Get https://192.168.200.200:6443/healthz?timeout=1s: context deadline exceeded (Client.Timeout exceeded while awaiting headers)
LVS+nginx配置完成后访问VIP没有进行转发。
MASTER级配置: ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 100 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.23.52.200 } } virtual_server 10.23.52.200 80{ delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 1 protocol TCP real_server 10.23.52.113 80{ weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_:retry 3 } } real_server 10.23.52.114 80{ weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } 查看监听情况: [root@localhost keepalived]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.23.52.200:80 wrr persistent 1 -> 10.23.52.113:80 Route 1 0 0 -> 10.23.52.114:80 Route 1 0 0 [root@localhost keepalived]# 查看日志: [root@localhost keepalived]# tail -f /var/log/messages Mar 6 10:31:25 localhost kernel: IPVS: [wrr] scheduler registered. Mar 6 10:31:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE Mar 6 10:31:27 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE Mar 6 10:31:27 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs. Mar 6 10:31:27 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.23.52.200 Mar 6 10:31:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.23.52.200 Mar 6 10:32:08 localhost Keepalived_healthcheckers: TCP connection to [10.23.52.113]:80 failed !!! Mar 6 10:32:08 localhost Keepalived_healthcheckers: Removing service [10.23.52.113]:80 from VS [10.23.52.200]:80 Mar 6 10:32:20 localhost Keepalived_healthcheckers: TCP connection to [10.23.52.113]:80 success. Mar 6 10:32:20 localhost Keepalived_healthcheckers: Adding service [10.23.52.113]:80 to VS [10.23.52.200]:80 访问真是IP: [root@localhost keepalived]# curl 10.23.52.113 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.我是113号机器 </em></p> </body> </html> [root@localhost keepalived]# 访问VIP一直没有反应: [root@localhost keepalived]# curl 10.23.52.200 curl: (7) couldn't connect to host [root@localhost keepalived]#
各位大佬,请问一下:VC++6.0编译时没错误,但是运行不了是因为什么啊,都是照着书编的!
BOOL CRentDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here //初始化List控件的栏目名,设置List控件每列的标题、宽度 m_rentInfoList.InsertColumn(0,"ID",LVCFMT_LEFT,40,-1); m_rentInfoList.InsertColumn(1,"租借人",LVCFMT_LEFT,160,-1); m_rentInfoList.InsertColumn(2,"租借DVD名",LVCFMT_LEFT,200,-1); m_rentInfoList.InsertColumn(3,"租借日期",LVCFMT_LEFT,160,-1); //设置List的行被选中时是全行选中 m_rentInfoList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); //设置Date Time Picker控件的日期格式 m_DateFrom.SetFormat("yyyyMMdd"); m_DateTo.SetFormat("yyyyMMdd"); //日期查询初始化时是不选中的,设置起始日期的控件不可用 m_check_Date=FALSE; m_DateFrom.EnableWindow(FALSE); m_DateTo.EnableWindow(FALSE); //初始化数据库连接 HRESULT hr; try { //实例化连接对象 hr=m_pConnection.CreateInstance(__uuidof(Connection)); if(SUCCEEDED(hr)) { //设置连接串属性为UDL文件 m_pConnection->ConnectionString="File Name=my_data1.udl"; //设置等待连接打开的时间为20秒 m_pConnection->ConnectionTimeout=20; hr=m_pConnection->Open ("","","",NULL); if(FAILED(hr)) { AfxMessageBox("open fail!"); return TRUE; } } else { AfxMessageBox("createinstance of Connection fail!"); return TRUE; } } catch(_com_error e) {//给出异常信息 _bstr_t bstrSource(e.Source ()); _bstr_t bstrDescription(e.Description()); AfxMessageBox(bstrSource+bstrDescription); return TRUE; } //获得本月的出租记录,并显示在List控件中 InitListCtr(); return TRUE; // return TRUE unless you set the focus to a control } void CRentDlg::OnCheckDate() { // TODO: Add your control notification handler code here if(m_check_Date==FALSE) { m_check_Date=TRUE; m_DateFrom.EnableWindow(TRUE); m_DateTo.EnableWindow(TRUE); } else { m_check_Date=FALSE; m_DateFrom.EnableWindow(FALSE); m_DateTo.EnableWindow(FALSE); } } void CRentDlg::InitListCtr() { HRESULT hr; //定义记录集指针 _RecordsetPtr pRentRecordset; //实例化记录集指针 hr=pRentRecordset.CreateInstance(__uuidof(Recordset)); //判断创建记录集指针实例是否成功 if(FAILED(hr)) { AfxMessageBox("createinstance of Recordset fail!\n can't initiate List control!"); return; } //定义字符串存储SQL语句 CString strSql; //定义_variant_t变量存储从数据库读取到的字段 _variant_t var; //定义字符串存储_varient_t变量中的字符串 CString strValue; //List控件中记录的序号 int curItem=0; //初始化SQL语句字符串,获得tbRentInfo表中的 strSql="SELECT * FROM tbRentInfo"; try {//利用Open函数执行SQL命令,获得查询结果记录集 //需要把CString类型转化为_varient_t类型 hr=pRentRecordset->Open (_variant_t(strSql), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); if(SUCCEEDED(hr)) {//判断记录集是否到末尾,对每条记录,把字段插入List控件的每一行中 while(!pRentRecordset->adoEOF) {//获得记录集中但前记录的第一个字段的值 var = pRentRecordset->GetCollect((long)0); if(var.vt != VT_NULL) strValue = (LPCSTR)_bstr_t(var); //插入该字符串到List控件中 m_rentInfoList.InsertItem(curItem,strValue); //获得记录集中但前记录的"Name"字段的值 var = pRentRecordset->GetCollect("Name"); if(var.vt != VT_NULL); strValue = (LPCSTR)_bstr_t(var); m_rentInfoList.SetItemText(curItem,1,strValue); var = pRentRecordset->GetCollect("DVDID"); if(var.vt != VT_NULL); strValue = (LPCSTR)_bstr_t(var); //需要根据该DVDID查询tbDVDInfo,获得DVDname,插入List控件中 m_rentInfoList.SetItemText(curItem,2,QueryDVDName(strValue)); var = pRentRecordset->GetCollect("Date"); if(var.vt != VT_NULL); strValue = (LPCSTR)_bstr_t(var); m_rentInfoList.SetItemText(curItem,3,strValue); //移动当前记录到下一条记录 pRentRecordset->MoveNext(); curItem++; } } else { AfxMessageBox("Open recordset fail!"); } } catch(_com_error *e) { AfxMessageBox( e->ErrorMessage()); return; } pRentRecordset->Close(); pRentRecordset=NULL; } CString CRentDlg::QueryDVDName(CString DVDID) { _RecordsetPtr pDVDNameRecordset; pDVDNameRecordset.CreateInstance(__uuidof(Recordset)); CString strValue; _variant_t var; //直接使用_bstr_t类型的字符串 _bstr_t vSQL; //选择参数指定的DVDID的记录 vSQL="select DVDNme from tbDVDInfo where DVDID="+DVDID; try {//vSQL可以直接作为参数传给Open函数,而如果使用CStrig类型需要类型转换 HRESULT hr; //利用SQL语句打开记录集 hr=pDVDNameRecordset->Open(vSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); if(!FAILED(hr)) { var=pDVDNameRecordset->GetCollect("DVDName"); if(var.vt != VT_NULL); strValue = (LPCSTR)_bstr_t(var); } else strValue=""; } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); strValue=""; } pDVDNameRecordset->Close(); pDVDNameRecordset=NULL; return strValue; } 这些是我加的除了添加成员函数和成员变量以外的程序,应该怎么改啊
lvs dr模式访问VIP总只轮询其中一个真实IP地址,另一个真实IP一直没轮询过?
不知道为什么访问VIP,显示总是轮询的那一台真实IP124那台,哪怕把会话保持设置成0,也是那样 ![图片说明](https://img-ask.csdn.net/upload/201912/21/1576911733_542219.png)![图片说明](https://img-ask.csdn.net/upload/201912/21/1576911744_914013.png)
keepalived+twemproxy +redis问题求教
自己搭了玩的,2台虚拟机 10.20.71.150(redis2个实例分别是端口6379,6389 twemproxy 监听22122 -s22222 此外还有keepalived (只装了这一个没有master/slave。就有问题了)) 10.20.71.161(redis2个实例分别是端口6379,6389 twemproxy 监听22122 -s22222) VIP:10.20.71.65 集体配置: ```10.20.71.150 nutcracker.yml alpha: listen: 10.20.71.150:22122 hash: fnv1a_64 distribution: ketama auto_eject_hosts: true redis: true server_retry_timeout: 2000 server_failure_limit: 1 servers: - 127.0.0.1:6379:1 - 127.0.0.1:6389:1 - 10.20.71.161:6379:1 - 10.20.71.161:6389:1 ``` ```10.20.71.161 nutcracker.yml alpha: listen: 10.20.71.161:22122 hash: fnv1a_64 distribution: ketama auto_eject_hosts: true redis: true server_retry_timeout: 2000 server_failure_limit: 1 servers: - 127.0.0.1:6379:1 - 127.0.0.1:6389:1 - 10.20.71.150:6379:1 - 10.20.71.150:6389:1 ``` ```keepalived.conf ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.20.71.65 } } virtual_server 10.20.71.65 22122 { delay_loop 3 lb_algo wrr lb_kind DR protocol TCP sorry_server 127.0.0.1 22122 real_server 10.20.71.150 22122 { TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 10.20.71.161 22122 { TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } ``` ```各进程情况,以及ipvsadm -Ln [root@dev2 src]# ps -ef|grep redis root 734 1 0 02:32 ? 00:00:05 /opt/redis-3.0.2/src/redis-server *:6379 root 742 1 0 02:32 ? 00:00:05 /opt/redis-3.0.2/src/redis-server *:6389 root 2754 1899 0 05:02 pts/0 00:00:00 grep redis [root@dev2 src]# ps -ef|grep nut root 2090 1 0 04:04 ? 00:00:00 /opt/twemproxy-0.4.0/src/nutcracker -d -c /opt/nutcracker2.yml -o /opt/twemproxy.log root 2756 1899 0 05:02 pts/0 00:00:00 grep nut [root@dev2 src]# ps -ef|grep keepalived root 2126 1 0 04:05 ? 00:00:00 /usr/sbin/keepalived -D root 2127 2126 0 04:05 ? 00:00:00 /usr/sbin/keepalived -D root 2128 2126 0 04:05 ? 00:00:00 /usr/sbin/keepalived -D root 2758 1899 0 05:02 pts/0 00:00:00 grep keepalived [root@dev2 src]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.20.71.65:22122 wrr -> 10.20.71.150:22122 Local 1 0 0 -> 10.20.71.161:22122 Route 1 0 0 [root@dev2 src]# ``` ```问题现象:VIP(65)+22122不能访问 [root@dev2 src]# ./redis-cli -h 10.20.71.65 -p 22122 Could not connect to Redis at 10.20.71.65:22122: Connection timed out not connected> ```真实IP+22122可以访问(应该能证明twemproxy没有问题吧) [root@dev2 src]# ./redis-cli -h 10.20.71.150 -p 22122 10.20.71.150:22122> set oo 11 OK 10.20.71.150:22122> get oo "11" 10.20.71.150:22122> ```真实IP+redis端口也是可以的(redis应该也没装错) [root@dev2 src]# ./redis-cli -h 10.20.71.150 -p 6389 10.20.71.150:6389> set pp pp OK 10.20.71.150:6389> get pp "pp" ```最后VIP+redis端口也是可以的 [root@dev2 src]# ./redis-cli -h 10.20.71.65 -p 6389 10.20.71.65:6389> keys * 1) "m" 2) "pp" 3) "redisinstallredord" 4) "1" ``` ```另外telnetVIP+22222端口能返会server信息 {"service":"nutcracker", "source":"dev2", "version":"0.3.0", "uptime":2934, "tim estamp":1440665580, "total_connections":955, "curr_connections":2, "alpha": {"cl ient_eof":0, "client_err":951, "client_connections":1, "server_ejects":0, "forwa rd_error":0, "fragments":0, "127.0.0.1:6379": {"server_eof":0, "server_err":0, " server_timedout":0, "server_connections":1, "server_ejected_at":0, "requests":4, "request_bytes":109, "responses":4, "response_bytes":26, "in_queue":0, "in_queu e_bytes":0, "out_queue":0, "out_queue_bytes":0},"127.0.0.1:6389": {"server_eof": 0, "server_err":0, "server_timedout":0, "server_connections":0, "server_ejected_ at":0, "requests":0, "request_bytes":0, "responses":0, "response_bytes":0, "in_q ueue":0, "in_queue_bytes":0, "out_queue":0, "out_queue_bytes":0},"10.20.71.161:6 379": {"server_eof":0, "server_err":0, "server_timedout":0, "server_connections" :0, "server_ejected_at":0, "requests":0, "request_bytes":0, "responses":0, "resp onse_bytes":0, "in_queue":0, "in_queue_bytes":0, "out_queue":0, "out_queue_bytes ":0},"10.20.71.161:6389": {"server_eof":0, "server_err":0, "server_timedout":0, "server_connections":0, "server_ejected_at":0, "requests":0, "request_bytes":0, "responses":0, "response_bytes":0, "in_queue":0, "in_queue_bytes":0, "out_queue" :0, "out_queue_bytes":0}}} Connection to host lost. C:\Windows\System32>telnet 10.20.71.65 22222 ``` telnet个端口IP组合以及应用程序请求和redis-cli表现一致。 求问,为什么最希望访问的组合 VIP+22122(proxy端口)不能访问????? ```
LVS+Keepalived配置异常,mapping出来过后没有VIP也没有real Server
各位大哥 VIP:10.23.52.100 LVS1(master) 10.23.52.111 LVS2(backup) 暂时没有配置备份机 RealServer1 10.23.52.113 RealServer 2 10.23.52.114 主机:MASTER ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.23.52.100 } } virtual_server 10.23.52.100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 0 protocol TCP real_server 10.23.52.113 80{ weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 10.23.52.114 80{ weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } 配置成功后IP ADD 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet 10.23.52.110/32 brd 10.23.52.110 scope global lo:0 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:be:7f:1c brd ff:ff:ff:ff:ff:ff inet 10.23.52.111/24 brd 10.23.52.255 scope global eth0 inet 10.23.52.100/32 scope global eth0 inet6 fe80::250:56ff:febe:7f1c/64 scope link valid_lft forever preferred_lft forever real Server服务器脚本: #!/bin/bash #description:start realserver vip=10.23.52.100 source /etc/rc.d/init.d/functions case $1 in start) echo "Start Realserver" /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce ;; stop) echo "Stop Realserver" /sbin/ifconfig lo:0 down echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce ;; *) echo "Usage: $0 (start | stop)" exit 1 esac IP ADD查看 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet 10.23.52.100/32 brd 10.23.52.100 scope global lo:0 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:50:56:be:0e:b8 brd ff:ff:ff:ff:ff:ff inet 10.23.52.113/24 brd 10.23.52.255 scope global eth0 inet6 fe80::250:56ff:febe:eb8/64 scope link valid_lft forever preferred_lft forever [root@Nginx01 nginx]# 都是显示正常,但是最后在ipvsadm时就这样了,没有任何信息返回 [root@localhost keepalived]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@localhost keepalived]#
MFC listcontrol report样式存取一行数据并计算。
目的:使用MFC listcontrol report样式存取一行数据,并用这一行数据按照一个公式进行计算。 我的问题:输入不同数据后,调用后发现结构体数组里的值都一样。 第三MessageBox(damage[0].ZheSheLv); MessageBox(damage[0].HouDu); 这两个值总显示一样的,问什么?????? 操作: 1.在头文件里,建立了一个结构体,全局声明结构体数组,; typedef struct damagePos { CString MianShu; CString BanJing; CString ZheSheLv; CString HouDu; }; static damagePos damage[50]; 2.对话框初始化 DWORD dwStyle=m_store_items.GetExtendedStyle(); dwStyle|=LVS_EX_FULLROWSELECT; dwStyle|=LVS_EX_GRIDLINES; m_store_items.SetExtendedStyle(dwStyle); m_store_items.InsertColumn(0,"光学面数",LVCFMT_LEFT,80); m_store_items.InsertColumn(1, _T("半径"), LVCFMT_CENTER,100); m_store_items.InsertColumn(2, _T("折射率"), LVCFMT_CENTER,100); m_store_items.InsertColumn(3, _T("厚度"), LVCFMT_CENTER,100); m_edit_pos.ShowWindow(SW_HIDE); 2.添加edit控件,离焦事件函数,存取输入的数据 void CMy3Dlg::OnKillfocusEdit1() { // TODO: Add your control notification handler code here CString str0; m_edit_pos.GetWindowTextA((LPTSTR)(LPCTSTR)str0,-1);//获取输入框中的数据 m_store_items.SetItemText(m_ListRow,m_ListCol,str0);//设置选中框的字符为刚刚输入的值 //将输入的数据传递给结构体数组 //damagePos damage[50] if(m_ListCol%3==0) { MessageBox("输入厚度"); MessageBox(str0); damage[m_ListRow].HouDu=str0; } else if(m_ListCol%2==0) { MessageBox("输入折射率"); MessageBox(str0); //strcpy(damage[m_ListRow].ZheSheLv,str0); damage[m_ListRow].ZheSheLv=str0; //MessageBox(damage[m_ListRow].ZheSheLv); } else { MessageBox("进入输入半径"); MessageBox(str0); damage[m_ListRow].BanJing="半径"; } 3.建立button控件,添加事件,目的使用上面的结构体数组中的数据完成计算。 MessageBox(damage[0].ZheSheLv); MessageBox(damage[0].HouDu); return; double num1,num2,num3,num4,num5; CString str1; char ch5[10]; str1=itoa(m_ListRow,ch5,10); MessageBox(str1); MessageBox(damage[m_ListRow].ZheSheLv); CString str2; char ch6[10]; str2=itoa(m_ListRow,ch6,10); MessageBox(damage[m_ListRow].HouDu); CString str3; char ch7[10]; str3=itoa(m_ListRow,ch7,10); MessageBox(damage[m_ListRow].BanJing); return; // TODO: Add your control notification handler code here for(int i=0;i<m_ListRow+1;i++) { if(m_ListRow==0) { // MessageBox("niaho"); num1=10 /atof(damage[m_ListRow].BanJing); num2=num1*(1/atof(damage[m_ListRow].HouDu)) ; num3=num1-num2; num4=atof(damage[m_ListRow].BanJing)+atof(damage[m_ListRow].BanJing)*num2/num3; num5=num4-atof(damage[m_ListRow].HouDu); CString str; char ch4[10]; str=gcvt(num2,8,ch4); MessageBox(str); }}
access数据库,0xC0000005: 读取位置 0xe38e38e4 时发生访问冲突
void CdatabaseDlg::OnBnClickedSelect() { // TODO: 在此添加控件通知处理程序代码 int i = 0; // m_list.DeleteAllItems(); cmd.OnInitDialog(); UpdateData(true); // CRect rect; // 获取编程语言列表视图控件的位置和大小 // m_list.GetClientRect(&rect); // 为列表视图控件添加全行选中和栅格风格 // m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // m_list.InsertColumn(0, _T("城市"), LVCFMT_LEFT, rect.Width() / 3); // m_list.InsertColumn(1, _T("区县"), LVCFMT_LEFT, rect.Width() / 3); // m_list.InsertColumn(2, _T("邮编"), LVCFMT_LEFT, rect.Width() / 3); { try { _variant_t RecordsAffected; cmd.m_pRecordset.CreateInstance(__uuidof(Recordset));//初始化Recordset指针 CString search_sql; search_sql = "SELECT * FROM 监视和测量设备"; cmd.m_pRecordset = cmd.m_pConnection->Execute(search_sql.AllocSysString(), NULL, adCmdText); while (!cmd.m_pRecordset->adoEOF) { CString name,department,user,category,number,number1,model,number2,category1,importance,oldpany; CString newpany,cost,date,date1,date2,number3,factory,test,grade,result,state,state1,no,information,date3; // CString chooseid; // CString choosevalue; name = cmd.m_pRecordset->GetCollect("name").bstrVal; m_list.InsertItem(i, name); department = cmd.m_pRecordset->GetCollect("part").bstrVal; m_list.SetItemText(i, 1, department); user = cmd.m_pRecordset->GetCollect("user").bstrVal; m_list.SetItemText(i, 2, user); category = cmd.m_pRecordset->GetCollect("category").bstrVal; m_list.SetItemText(i, 3, category); number = cmd.m_pRecordset->GetCollect("number").bstrVal; m_list.SetItemText(i, 4, number); number1 = cmd.m_pRecordset->GetCollect("number1").bstrVal; m_list.SetItemText(i, 5, number1); model = cmd.m_pRecordset->GetCollect("model").bstrVal; m_list.SetItemText(i, 6, model); number2 = cmd.m_pRecordset->GetCollect("number2").bstrVal; m_list.SetItemText(i, 7, number2); category1 = cmd.m_pRecordset->GetCollect("category1").bstrVal; m_list.SetItemText(i, 8, category1); importance = cmd.m_pRecordset->GetCollect("importance").bstrVal; m_list.SetItemText(i, 9, importance); oldpany = cmd.m_pRecordset->GetCollect("oldpany").bstrVal; m_list.SetItemText(i, 10, oldpany); newpany = cmd.m_pRecordset->GetCollect("newpany").bstrVal; m_list.SetItemText(i, 11, newpany); cost = cmd.m_pRecordset->GetCollect("cost").bstrVal; m_list.SetItemText(i, 12, cost); date = cmd.m_pRecordset->GetCollect("date").bstrVal; m_list.SetItemText(i, 13, date); date1 = cmd.m_pRecordset->GetCollect("date1").bstrVal; m_list.SetItemText(i, 14, date1); date2 = cmd.m_pRecordset->GetCollect("date2").bstrVal; m_list.SetItemText(i, 15, date2); number3 = cmd.m_pRecordset->GetCollect("number3").bstrVal; m_list.SetItemText(i, 16, number3); factory = cmd.m_pRecordset->GetCollect("factory").bstrVal; m_list.SetItemText(i, 17, factory); test = cmd.m_pRecordset->GetCollect("test").bstrVal; m_list.SetItemText(i, 18, test); grade = cmd.m_pRecordset->GetCollect("grade").bstrVal; m_list.SetItemText(i, 19, grade); result = cmd.m_pRecordset->GetCollect("result").bstrVal; m_list.SetItemText(i, 20, result); state = cmd.m_pRecordset->GetCollect("state").bstrVal; m_list.SetItemText(i, 21, state); state1 = cmd.m_pRecordset->GetCollect("state1").bstrVal; m_list.SetItemText(i, 22, state1); no = cmd.m_pRecordset->GetCollect("no").bstrVal; m_list.SetItemText(i, 23, no); information = cmd.m_pRecordset->GetCollect("information").bstrVal; m_list.SetItemText(i, 24, information); date3 = cmd.m_pRecordset->GetCollect("date3").bstrVal; m_list.SetItemText(i, 25, date3); cmd.m_pRecordset->MoveNext(); i++; } cmd.m_pRecordset->Close(); } catch (_com_error e) { AfxMessageBox(_T("搜索失败!")); return; } } } 执行到这date3 = cmd.m__pRecordset->GetCollect("date3").bstrVal; 再往下执行就报错,求大神指导,小白初学者
LVS的ldirectord健康检查中,后端一台服务器无端访问不到页面?
很疑惑在lvs环境里原本根据ldirector中,原本正常的轮询访问,但一台服务器突然 访问不到,对于红帽实验环境的不稳定这种情况该怎麼解决? ![图片说明](https://img-ask.csdn.net/upload/201908/01/1564672819_942712.png) 访问情况这样的: ![图片说明](https://img-ask.csdn.net/upload/201908/01/1564673247_442725.png) 为什幺呢?求解答
关于LVS+KeepAlived,出现Connection reset by peer
我配置完LVS+KeepAlived之后(是一个socket服务的lvs集群),RS日志中总是不停的在出现java.io.IOException: Connection reset by peer错误 keepAlived配置如下: global_defs { lvs_id LVS_1 } vrrp_instance VI_1 { state MASTER interface eth0 lvs_sync_daemon_interface eth0 virtual_router_id 50 priority 100 advert_int 1 smtp_alert garp_master_delay 1 preempt_delay 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.212.130 } } virtual_server 172.16.212.130 8066 { delay_loop 5 lb_algo wrr lb_kind DR protocol TCP real_server 172.16.212.200 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.201 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.202 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.203 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.204 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.205 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.206 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } real_server 172.16.212.207 8066 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8066 } } }
Haproxy+LVS高可用集群,实现之后出现调度问题
下面这些都是我在虚拟机做的实验结果-.- 有两台网站服务器,两台LVS 做网站的分发器,一台HAproxy做两台LVS的调度器 配置什么的我这就不说了。主要是完成后的结果让我感到意外。 环境 redhat6.7 LVS做的是DR模式 HA和LVS 调度算法全是 rr 权重为都为1 HA服务器 ip 192.168.4.20 and 192.168.2.20 vip地址 192.168.4.20 LVS一 ip 192.168.4.10 vip地址 192.168.4.15 LVS二 ip 192.168.2.10 vip地址 192.168.2.15 webserver 一 192.168.4.111 and 192.168.2.111 cat /var/www/html/a.html 192.168.4.111 webserver 二 192.168.4.222 and 192.168.2.222 网站内容 192.168.4.222 cat /var/www/html/a.html 192.168.4.222 做完了相关的配置之后客户端访问 192.168.4.20地址,出现了调度问题 两边的web网站我都能访问到,但是并不是均衡出现的 很乱 我看了HAweb的管理页面是轮询,我单独访问两边LVS的vip地址也没有出错,两个结合就有问题了。。 里面是不是有什么逻辑问题阿,求解!!
关于session共享失败的问题
1、两个tomcat在同一台机器上、seesion共享成功。(tomcat端口不同) 2、tomcat在不同的机器上,session共享失败。日志如下: Jul 23, 2015 5:41:27 AM de.javakaffee.web.msm.MemcachedSessionService requestFinished FINE: No session found in session map for 5556F95BE394E00AF2AB3D024AE77A97-n1 总是找不到session 3、tomcat配置文件context.xml <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.8.20:11211" sticky="false" lockingMode="auto" sessionBackupAsync="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> 所有tomcat的配置都一样、版本都是7.0.54、tomcat在不同机器上的时候、负载不管用nginx、还是lvs都session共享失败。 系统版本为centos6.5、放火强都已经关闭。 4、求大神给小弟分析下、这是什么原因造成。小弟不胜感激。
keepalived的vrrp_script没有启动
我想在httpd停止后自动停止keepalived的服务,但是在主机上设置的vrrp_script没有任何作用。keepalived.conf配置如下: global_defs { notification_email { } router_id LVS_DEVEL } vrrp_script chk_app_port { script "/opt/checkport.sh" #监控脚本 interval 3 #脚本执行间隔 weight -1 #权重 fall 3 rise 1 } vrrp_sync_group VG_1 { group { VI_1 } notify_master /opt/mailsend.py } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.16/24 192.168.1.17/24 192.168.1.19/24 } track_interface{ eth0 } track_script { chk_app_port #监控调用 } } checkport.sh如下: #!/bin/sh #count=`netstat -nltp|grep httpd|wc -l` #if [ "${count}" = "0" ]; then #echo ${count} /etc/init.d/keepalived stop exit 0 #fi 显示情况: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:96:d0:01 brd ff:ff:ff:ff:ff:ff inet 192.168.1.140/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.16/24 scope global secondary eth0 inet 192.168.1.17/24 scope global secondary eth0 inet 192.168.1.19/24 scope global secondary eth0 inet6 fe80::20c:29ff:fe96:d001/64 scope link valid_lft forever preferred_lft forever 目前ip可以切换,就是vrrp_script脚本没有在执行。请高手指教一下。谢谢
lvs+keepalived 虚拟机配置了请求不能跳转
我只配置了主服务器 和一台web服务器, 主服务器的keepalived.cof配置如下: ! Configuration File for keepalived global_defs { notification_email { xxx@qq.com } notification_email_from root smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.206.14.200 } } virtual_server 10.206.14.200 80 { delay_loop 6 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 #persistence_timeout 50 protocol TCP real_server 10.206.14.171 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 2 nb_get_retry 3 delay_before_retry 1 } } } 我浏览器输入我配置的虚拟地址后 报错 ![图片说明](https://img-ask.csdn.net/upload/201706/08/1496913130_711821.png) 各位大神 这是什么原因啊
版图画完后LVS出现这个情况怎么办?
![![图片说明](https://img-ask.csdn.net/upload/201708/09/1502283313_212918.png)图片说明](https://img-ask.csdn.net/upload/201708/09/1502283304_791952.png)
hadoop集群,hdfs dfs -ls / 目录出错
搭建了一个hadoop集群,用hdfs dfs -ls /命令,列出的是本地系统的根目录。 用hdfs dfs -ls hdfs://servicename/ 列出的目录才是hdfs上的目录,可能是什么原因? 执行hive创建的目录也是在本地系统目录上。 集群的配置如下 集群规划: 主机名 IP 安装的软件 运行的进程 hadoop01 192.168.175.129 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) hadoop02 192.168.175.127 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) hadoop03 192.168.175.126 jdk、hadoop ResourceManager hadoop04 192.168.175.125 jdk、hadoop ResourceManager hadoop05 192.168.175.124 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain hadoop06 192.168.175.123 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain hadoop07 192.168.175.122 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain windows:NLB LINUX:LVS 1.liunx虚拟机安装后,虚拟机连接模式要选择host-only模式。然后分配IP(以hadoop01为例) DEVICE="eth0" BOOTPROTO="static" ### HWADDR="00:0C:29:3C:BF:E7" IPV6INIT="yes" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c" IPADDR="192.168.175.129" ### NETMASK="255.255.255.0" ### GATEWAY="192.168.175.1" ### 2.修改主机名: vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop01 ### 3.关闭防火墙: #查看防火墙状态 service iptables status #关闭防火墙 service iptables stop #查看防火墙开机启动状态 chkconfig iptables --list #关闭防火墙开机启动 chkconfig iptables off 4.免登录配置: #生成ssh免登陆密钥 #进入到我的home目录 cd ~/.ssh ssh-keygen -t rsa (四个回车) 执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) 将公钥拷贝到要免登陆的机器上 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 或 若报错ssh-copy-id: ERROR: No identities found,是因为找不到公钥路径,加上-i然后再加上路径即可 则用 $ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_ip 5.主机IP映射关系(/etc/hosts每台机器上都要配置全部映射关系) 192.168.175.129 hadoop01 192.168.175.127 hadoop02 192.168.175.126 hadoop03 192.168.175.125 hadoop04 192.168.175.124 hadoop05 192.168.175.123 hadoop06 192.168.175.122 hadoop07 6./etc/profile下配置java环境变量: export JAVA_HOME=/lichangwu/jdk1.7.0_79 export PATH=$PATH:$JAVA_HOME/bin #刷新profile source /etc/profile 若版本报错,vi /etc/selinux/config,设置SELINUX=disabled,然后重启虚拟机 7.安装zookeeper: 1.安装配置zooekeeper集群(在hadoop05上): 1.1解压 tar -zxvf zookeeper-3.4.6.tar.gz -C /lichangwu/ 1.2修改配置 cd /lichangwu/zookeeper-3.4.6/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改:dataDir=/lichangwu/zookeeper-3.4.6/tmp 在最后添加: server.1=hadoop05:2888:3888 server.2=hadoop06:2888:3888 server.3=hadoop07:2888:3888 保存退出 然后创建一个tmp文件夹 mkdir /lichangwu/zookeeper-3.4.6/tmp 再创建一个空文件 touch /lichangwu/zookeeper-3.4.6/tmp/myid 最后向该文件写入ID echo 1 > /lichangwu/zookeeper-3.4.6/tmp/myid 1.3将配置好的zookeeper拷贝到其他节点(首先分别在hadoop06、hadoop07根目录下创建一个lichangwu目录:mkdir /lichangwu) scp -r /lichangwu/zookeeper-3.4.6/ hadoop06:/lichangwu/ scp -r /lichangwu/zookeeper-3.4.6/ hadoop07:/lichangwu/ 注意:修改hadoop06、hadoop07对应/lichangwu/zookeeper-3.4.6/tmp/myid内容 itcast06: echo 2 > /lichangwu/zookeeper-3.4.6/tmp/myid itcast07: echo 3 > /lichangwu/zookeeper-3.4.6/tmp/myid 8.安装配置hadoop集群(在hadoop01上操作): 2.1解压 tar -zxvf hadoop-2.4.1.tar.gz -C /lichangwu/ 2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下) #将hadoop添加到环境变量中 vim /etc/profile export JAVA_HOME=/lichangwu/jdk1.7.0_79 export HADOOP_HOME=/lichangwu/hadoop-2.4.1 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin #hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下 cd /lichangwu/hadoop-2.4.1/etc/hadoop 2.2.1修改hadoo-env.sh export JAVA_HOME=/lichangwu/jdk1.7.0_79 2.2.2修改core-site.xml <configuration> <!-- 指定hdfs的nameservice为ns1 --> <property> <name>fs.defaultFS</name> <value>hdfs://ns1</value> </property> <!-- 指定hadoop临时目录 --> <property> <name>hadoop.tmp.dir</name> <value>/lichangwu/hadoop-2.4.1/tmp</value> </property> <!-- 指定zookeeper地址 --> <property> <name>ha.zookeeper.quorum</name> <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value> </property> </configuration> 2.2.3修改hdfs-site.xml <configuration> <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>ns1</value> </property> <!-- ns1下面有两个NameNode,分别是nn1,nn2 --> <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>hadoop01:9000</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>hadoop01:50070</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>hadoop02:9000</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>hadoop02:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop05:8485;hadoop06:8485;hadoop07:8485/ns1</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/lichangwu/hadoop-2.4.1/journal</value> </property> <!-- 开启NameNode失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence shell(/bin/true) </value> </property> <!-- 使用sshfence隔离机制时需要ssh免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <!-- 配置sshfence隔离机制超时时间 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> </configuration> 2.2.4修改mapred-site.xml <configuration> <!-- 指定mr框架为yarn方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 2.2.5修改yarn-site.xml <configuration> <!-- 开启RM高可靠 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 指定RM的cluster id --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property> <!-- 指定RM的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 分别指定RM的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>hadoop03</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>hadoop04</value> </property> <!-- 指定zk集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 2.2.6修改slaves(slaves是指定子节点的位置,因为要在itcast01上启动HDFS、在itcast03启动yarn, 所以itcast01上的slaves文件指定的是datanode的位置,itcast03上的slaves文件指定的是nodemanager的位置) hadoop05 hadoop06 hadoop07 2.2.7配置免密码登陆 #首先要配置itcast01到hadoop02、hadoop03、hadoop04、hadoop05、hadoop06、hadoop07的免密码登陆 #在hadoop01上生产一对钥匙 ssh-keygen -t rsa #将公钥拷贝到其他节点,包括自己 ssh-coyp-id hadoop01 ssh-coyp-id hadoop02 ssh-coyp-id hadoop03 ssh-coyp-id hadoop04 ssh-coyp-id hadoop05 ssh-coyp-id hadoop06 ssh-coyp-id hadoop07 #配置hadoop03到hadoop04、hadoop05、hadoop06、hadoop07的免密码登陆 #在hadoop03上生产一对钥匙 ssh-keygen -t rsa #将公钥拷贝到其他节点 ssh-coyp-id hadoop04 ssh-coyp-id hadoop05 ssh-coyp-id hadoop06 ssh-coyp-id hadoop07 #注意:两个namenode之间要配置ssh免密码登陆,别忘了配置hadoop02到hadoop01的免登陆 在hadoop02上生产一对钥匙 ssh-keygen -t rsa ssh-coyp-id -i hadoop01 2.4将配置好的hadoop拷贝到其他节点 scp -r hadoop-2.4.1/ hadoop02:/lichangwu/hadoop-2.4.1/ scp -r hadoop-2.4.1/ hadoop03:/lichangwu/hadoop-2.4.1/ scp -r hadoop-2.4.1/ hadoop04:/lichangwu/hadoop-2.4.1/ scp -r hadoop-2.4.1/ hadoop05:/lichangwu/hadoop-2.4.1/ scp -r hadoop-2.4.1/ hadoop06:/lichangwu/hadoop-2.4.1/ scp -r hadoop-2.4.1/ hadoop07:/lichangwu/hadoop-2.4.1/ ###注意:严格按照下面的步骤 2.5启动zookeeper集群(分别在hadoop05、hadoop06、hadoop07上启动zk) cd /lichangwu/zookeeper-3.4.6/bin/ ./zkServer.sh start #查看状态:一个leader,两个follower ./zkServer.sh status 2.6启动journalnode(分别在在hadoop05、hadoop06、hadoop07上执行) cd /lichangwu/hadoop-2.4.1 sbin/hadoop-daemon.sh start journalnode #运行jps命令检验,hadoop05、hadoop06、hadoop07上多了JournalNode进程 2.7格式化HDFS #在hadoop01上执行命令: hdfs namenode -format #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件, 这里我配置的是/lichangwu/hadoop-2.4.1/tmp,然后将/lichangwu/hadoop-2.4.1/tmp拷贝到hadoop02的/lichangwu/hadoop-2.4.1/下。 scp -r tmp/ hadoop02:/lichangwu/hadoop-2.4.1/ 2.8格式化ZK(在hadoop01上执行即可) hdfs zkfc -formatZK 2.9启动HDFS(在hadoop01上执行) sbin/start-dfs.sh 2.10启动YARN(#####注意#####:是在hadoop03上执行start-yarn.sh, 如果hadoop04上没有启动成功,则在hadoop04上再启动一次start-yarn.sh; 把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动) sbin/start-yarn.sh 到此,hadoop-2.4.1配置完毕,可以统计浏览器访问: http://192.168.175.129:50070 NameNode 'hadoop01:9000' (active) http://192.168.175.127:50070 NameNode 'hadoop02:9000' (standby)
lvs+keepalived如何实现页面交替访问
lvs 192.168.0.106 realserver1 192.168.0.107 realserver2 192.168.0.108 vip 192.168.0.200 不能交替访问107,108. 很长时间才能交替一下
lvs Nginx keepalived apache shopnc css 图片不显示
问题描述: 整体架构是lvs Nginx keepalived apache 问题初步判断出在shopnc商城上或是nginx上,访问lvs vip 出现的页面没有图片和css样式,向下查找原因发现访问Nginx地址也没有图片和css样式,在Nginx访问下面apache地址都是正常的,求各位大神解答。 Nginx.conf片段 ``` server{ listen 82; server_name 50:82(LVS vip)53:82(nginx ip); location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$ { root /; if (-f $request_filename) { expires 1d; break; } } location ~.*\.(js|css)$ { root /; if (-f $request_filename) { expires 1d; break; } } location /{ root html ; index indexhtml index.htm index.php proxy_pass http://122:80;#apached地址 proxy_redirect off; proxy_set_header Host ¥Host; proxy_set_header Remote_Addr $remote_addr proxy_set_header X-REAL-IP $remote_addr proxy_set_header X-Forwarded $proxy_add_x_forwarded_for; } } ``` ![图片说明](https://img-ask.csdn.net/upload/201703/23/1490237321_362473.png) 这个架构里 80端口代理的是一个门户网站 都是正常的 css 图片都能加载 求解
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
五年程序员记流水账式的自白。
不知觉已中码龄已突破五年,一路走来从起初铁憨憨到现在的十九线程序员,一路成长,虽然不能成为高工,但是也能挡下一面,从15年很火的android开始入坑,走过java、.Net、QT,目前仍处于android和.net交替开发中。 毕业到现在一共就职过两家公司,目前是第二家,公司算是半个创业公司,所以基本上都会身兼多职。比如不光要写代码,还要写软著、软著评测、线上线下客户对接需求收集...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
一文详尽系列之模型评估指标
点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
还记得那个提速8倍的IDEA插件吗?VS Code版本也发布啦!!
去年,阿里云发布了本地 IDE 插件 Cloud Toolkit,仅 IntelliJ IDEA 一个平台,就有 15 万以上的开发者进行了下载,体验了一键部署带来的开发便利。时隔一年的今天,阿里云正式发布了 Visual Studio Code 版本,全面覆盖前端开发者,帮助前端实现一键打包部署,让开发提速 8 倍。 VSCode 版本的插件,目前能做到什么? 安装插件之后,开发者可以立即体验...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
2019年除夕夜的有感而发
天气:小雨(加小雪) 温度:3摄氏度 空气:严重污染(399) 风向:北风 风力:微风 现在是除夕夜晚上十点钟,再有两个小时就要新的一年了; 首先要说的是我没患病,至少现在是没有患病;但是心情确像患了病一样沉重; 现在这个时刻应该大部分家庭都在看春晚吧,或许一家人团团圆圆的坐在一起,或许因为某些特殊原因而不能团圆;但不管是身在何处,身处什么境地,我都想对每一个人说一句:新年快乐! 不知道csdn这...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了掌握好Android打下基础。
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问