负载均衡及服务器集群(lvs)

执行 ipvsadm 后的输出 | |
未安装ipvsadm | -bash: ipvsadm: command not foun |
安装ipvsadm | IP Virtual Server version Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn |
[root@hd-4 ipvsadm-1.24]# lsmod|grep ip_vs ip_vs 77569 0 |
[root@huludao-2 ~]# more /usr/local/bin/lvs_real #!/bin/bash #description : start realserver VIP=61.135.20.16 /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of 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) /sbin/ifconfig lo:0 down echo "close LVS Directorserver" 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 |
fav1# more /usr/local/bin/lvs_real_bsd #!/usr/local/bin/bash #description : start realserver VIP=61.135.20.16 case "$1" in start) echo " start LVS of REALServer" /sbin/ifconfig lo0 $VIP netmask 255.255.255.255 alias -arp up ;; stop) /sbin/ifconfig lo0 alias down echo "close LVS Directorserver" /sbin/ifconfig lo0 127.0.0.1 arp up ;; *) echo "Usage: $0 {start|stop}" exit 1 esac |
[root@huludao-2 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 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 61.135.20.16/32 brd 61.135.20.16 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 pfifo_fast qlen 100 link/ether 00:15:17:60:21:a0 brd ff:ff:ff:ff:ff:ff inet 61.135.20.101/24 brd 125.38.38.255 scope global eth0 inet6 fe80::215:17ff:fe60: valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:15:17:60:21:a1 brd ff:ff:ff:ff:ff:ff 4: sit0: <NOARP> mtu 1480 qdisc noop link/sit |
[root@huludao-2 ~]# lvs_real stop close LVS Directorserver [root@huludao-2 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 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 qlen 100 link/ether 00:15:17:60:21:a0 brd ff:ff:ff:ff:ff:ff inet 125.38.38.101/28 brd 125.38.38.111 scope global eth0 inet6 fe80::215:17ff:fe60: valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:15:17:60:21:a1 brd ff:ff:ff:ff:ff:ff 4: sit0: <NOARP> mtu 1480 qdisc noop link/sit |
fav1# ifconfig em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 00:15:17:6e:c8:46 inet 61.135.20.69 netmask 0xffffffc0 broadcast 61.128.20.127 media: Ethernet autoselect (100baseTX <full-duplex>) status: active lo0: flags= inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 inet 61.135.20.16 netmask 0xffffffff |

Keepalived configuration ------------------------ Keepalived version : 1.1.17 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -lpopt -lssl -lcrypto Use IPVS Framework : Yes IPVS sync daemon support : Yes Use VRRP Framework : Yes Use LinkWatch : No Use Debug flags : No |
[root@ChinaTelecom-1 etc]# pwd /usr/local/keepalived/etc [root@ChinaTelecom-1 etc]# ll total 12 drwxr-xr-x 3 root root 4096 Apr 23 10:23 keepalived drwxr-xr-x 3 root root 4096 Apr 23 10:23 rc.d drwxr-xr-x 2 root root 4096 Apr 23 10:23 sysconfig |
[root@ChinaTelecom-1 keepalived]# tree -l . |-- keepalived.conf `-- samples |-- client.pem |-- dh1024.pem |-- keepalived.conf.HTTP_GET.port |-- keepalived.conf.SMTP_CHECK |-- keepalived.conf.SSL_GET |-- keepalived.conf.fwmark |-- keepalived.conf.inhibit |-- keepalived.conf.misc_check |-- keepalived.conf.misc_check_arg |-- keepalived.conf.sample |-- keepalived.conf.status_code |-- keepalived.conf.track_interface |-- keepalived.conf.virtual_server_group |-- keepalived.conf.virtualhost |-- keepalived.conf.vrrp |-- keepalived.conf.vrrp.localcheck |-- keepalived.conf.vrrp.lvs_syncd |-- keepalived.conf.vrrp.routes |-- keepalived.conf.vrrp.scripts |-- keepalived.conf.vrrp.static_ipaddress |-- keepalived.conf.vrrp.sync |-- root.pem `-- sample.misccheck.smbcheck.sh |
[root@lvs-m ~]# ps aux| grep keepalived |grep -v grep root 21786 0.0 0.0 4840 564 ? Ss 15:39 0:00 keepalived -D root 21787 4.8 0.0 4884 1336 ? S 15:39 23:47 keepalived -D root 21788 4.9 0.0 4884 904 ? S 15:39 24:15 keepalived -D |

[root@lvs-m ~]# tail -f /var/log/messages Jun 27 00:58:05 lvs-m Keepalived: Starting VRRP child process, pid=22017 Jun 27 00:58:05 lvs-m Keepalived_healthcheckers: Netlink reflector reports IP 61.135.20.137 added Jun 27 00:58:05 lvs-m Keepalived_healthcheckers: Registering Kernel netlink reflector Jun 27 00:58:05 lvs-m Keepalived_vrrp: Netlink reflector reports IP 61.135.20.137 added Jun 27 00:58:05 lvs-m Keepalived_healthcheckers: Registering Kernel netlink command channel Jun 27 00:58:05 lvs-m Keepalived_vrrp: Registering Kernel netlink reflector Jun 27 00:58:05 lvs-m Keepalived_vrrp: Registering Kernel netlink command channel Jun 27 00:58:05 lvs-m Keepalived_vrrp: Registering gratutious ARP shared channel Jun 27 00:58:05 lvs-m Keepalived_healthcheckers: Configuration is using : 2285 Bytes Jun 27 00:58:05 lvs-m Keepalived_vrrp: Configuration is using : 28803 Bytes |
#全局定义块 global_defs { notification_email { email email } notification_email_from email smtp_server host smtp_connect_timeout num lvs_id string } #VRRP实例定义块 vrrp_sync_group string { group { string string } vrrp_instance string { state MASTER|BACKUP interface string mcast_src_ip @IP lvs_sync_daemon_interface string virtual_router_id num priority num advert_int num smtp_alert authentication { auth_type PASS|AH auth_pass string } virtual_ipaddress { # Block limited to 20 IP addresses @IP @IP @IP } virtual_ipaddress_excluded { # Unlimited IP addresses number @IP @IP @IP } #虚拟服务器定义块 virtual_server (@IP PORT)|(fwmark num) { delay_loop num lb_algo rr|wrr|lc|wlc|sh|dh|lblc lb_kind NAT|DR|TUN (nat_mask @IP) persistence_timeout num persistence_granularity @IP virtualhost string protocol TCP|UDP sorry_server @IP PORT real_server @IP PORT { weight num TCP_CHECK { connect_port num connect_timeout num } } real_server @IP PORT { weight num MISC_CHECK { misc_path /path_to_script/script.sh (or misc_path “/path_to_script/script.sh <arg_list>”) } } real_server @IP PORT { weight num HTTP_GET|SSL_GET { url { # You can add multiple url block path alphanum digest alphanum } connect_port num connect_timeout num nb_get_retry num delay_before_retry num } } } |
角色 | 所需ip | 实现负载所需软件 | 操作 |
负载均衡器(MASTER) | 接口ip、VIP | ipvsadm,keepalived | 安装ipvsadm及keepalived |
负载均衡器(BACKUP) | 接口ip、VIP | ipvsadm,keepalived | 安装ipvsadm及keepalived |
真实服务器(server pool) | 接口ip、VIP | Lvs 客户端配置脚本 | 按“6.1.2”节内容编写配置脚本 |
[root@huludao-2 ~]# more /usr/local/bin/lvs_real #!/bin/bash #description : start realserver VIP=125.38.38.64 /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of 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) /sbin/ifconfig lo:0 down echo "close LVS Directorserver" 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 |
#writed by sery , contact sery@163.com #guration File for keepalived #global define global_defs { router_id LVS_CNC_1 } vrrp_sync_group VGM { group { VI_CACHE } } ################################################################ # vvrp_instance define # ################################################################ vrrp_instance VI_CACHE { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 180 advert_int 5 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 125.38.38.64 } } ############################################################## # virtual machine setting # ############################################################## # setting port 80 forward virtual_server 125.38.38.64 80 { delay_loop 6 lb_algo wlc lb_kind DR # persistence_timeout 20 protocol TCP real_server 125.38.38.101 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 125.38.38.102 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 125.38.38.104 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 125.38.38.99 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } |
#writed by sery , contact sery@163.com #guration File for keepalived #global define global_defs { router_id LVS_CNC_2 } vrrp_sync_group VGM { group { VI_CACHE } } ################################################################ # vrrp_instance setting # ################################################################ vrrp_instance VI_CACHE { state BACKUP interface eth1 lvs_sync_daemon_inteface eth1 virtual_router_id 51 priority 150 advert_int 5 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 125.38.38.64 } } ############################################################## # virtual server setting # ############################################################## # setting port 80 forward virtual_server 125.38.28.64 80 { delay_loop 6 lb_algo wlc lb_kind DR # persistence_timeout 50 protocol TCP real_server 125.38.38.101 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 125.38.38.102 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 125.38.38.104 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 125.38.38.99 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } |
[root@hld081028-mk ~]# ipvsadm -lcn | grep 159.226.240.63 TCP 14:56 ESTABLISHED 159.226.240.63:39783 125.38.38.64:80 125.38.38.99:80 |
Jul 6 21:04:32 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) Transition to MASTER STATE Jul 6 21:04:32 telcom-dl-1 Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to MASTER state Jul 6 21:04:37 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) Entering MASTER STATE Jul 6 21:04:37 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) setting protocol VIPs. Jul 6 21:04:37 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) Sending gratuitous ARPs on eth1 for 218.24.35.105 Jul 6 21:04:37 telcom-dl-1 Keepalived_vrrp: Netlink reflector reports IP 125.38.38.64 added Jul 6 21:04:37 telcom-dl-1 Keepalived_healthcheckers: Netlink reflector reports IP 125.38.38.64 added Jul 6 21:04:42 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) Sending gratuitous ARPs on eth1 for 125.38.36.64 |
Jul 6 21:18:12 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) Received higher prio advert Jul 6 21:18:12 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CAHCE) Entering BACKUP STATE Jul 6 21:18:12 telcom-dl-1 Keepalived_vrrp: VRRP_Instance(VI_CACHE) removing protocol VIPs. Jul 6 21:18:12 telcom-dl-1 Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to BACKUP state Jul 6 21:18:12 telcom-dl-1 Keepalived_vrrp: Netlink reflector reports IP 125.38.38.64 removed Jul 6 21:18:12 telcom-dl-1 Keepalived_healthcheckers: Netlink reflector reports IP 125.38.38.64 removed |
负载均衡器 | Vip | Vrrp_instance | 角色 |
Lvs-1 | 61.135.93.99 60.135.93.100 | VI_WEB VI_CTCP | VI_WEB -à MASTER VI_CTCP-à BACKUP |
Lvs-2 | 61.135.93.99 60.135.93.100 | VI_WEB VI_CTCP | VI_WEB--à BACKUP VI_CTCP-à MASTER |
项目 | Vip | 转发端口(TCP) | 转发规则 |
Web(bbs、blog、www) | 61.135.93.99 | 80 | 61.135.93.99:80à 61.135.93.x:80 |
自定义服务1 | 61.135.99.100 | 3000 | 61.135.93.100:3000à61.135.93.y: 3000 |
自定义服务2 | 61.135.93.100 | 4000 | 61.135.93.100:4000->61.135.93.z: 4000 |
负载均衡器lvs_1配置文件/etc/keepalived/keepalived.conf | 负载均衡器lvs_2配置文件/etc/keepalived/keepalived.conf |
#guration File for keepalived,writed by sery #global define global_defs { router_id lvs_1 } vrrp_sync_group VGM { group { VI_WEB } } vrrp_sync_group VGB { group { VI_CTCP } } vrrp_instance VI_WEB{ state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 180 advert_int 5 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 61.135.93.99 } } # setting port 80 forward virtual_server 61.135.93.99 80 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 10 protocol TCP real_server 61.135.99.80 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 61.135.93.81 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 61.135.93.82 80 { weight 90 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 61.135.93.83 80 { weight 90 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } vrrp_instance VI_CTCP { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 52 priority 150 advert_int 5 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 61.135.93.100 } } virtual_server 61.135.93.100 3000 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 50 protocol TCP real_server 61.135.93.84 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } real_server 61.135.93.85 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } real_server 61.135.93.86 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } real_server 61.135.93.87 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } } virtual_server 61.135.93.100 4000 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 50 protocol TCP real_server 61.135.93.88 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } real_server 61.135.93.89 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } real_server 61.135.93.90 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } real_server 61.135.93.91 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } } | #guration File for keepalived,writed by sery #global define global_defs { router_id lvs_2 } vrrp_sync_group VGM { group { VI_CTCP } } vrrp_sync_group VGB { group { VI_WEB } } vrrp_instance VI_WEB{ state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 150 advert_int 5 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 61.135.93.99 } } # setting port 80 forward virtual_server 61.135.93.99 80 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 10 protocol TCP real_server 61.135.99.80 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 61.135.93.81 80 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 61.135.93.82 80 { weight 90 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 61.135.93.83 80 { weight 90 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } vrrp_instance VI_CTCP { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 52 priority 180 advert_int 5 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 61.135.93.100 } } virtual_server 61.135.93.100 3000 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 50 protocol TCP real_server 61.135.93.84 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } real_server 61.135.93.85 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } real_server 61.135.93.86 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } real_server 61.135.93.87 3000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3000 } } } virtual_server 61.135.93.100 4000 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 50 protocol TCP real_server 61.135.93.88 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } real_server 61.135.93.89 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } real_server 61.135.93.90 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } real_server 61.135.93.91 4000{ weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 4000 } } } |
Lvs_1 的ipvsadm输出(部分) | Lvs_2 的ipvsadm输出(部分) |
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 61.128.10.4:9000 wlc persistent 50 -> 61.128.10.16:9000 Route 200 4607 139 -> 61.128.10.17:9000 Route 200 4611 154 -> 61.128.10.5:9000 Route 100 2306 65 -> 61.128.10.8:9000 Route 100 2307 89 ……………………………… TCP 61.128.20.124:http wlc persistent 30 -> 61.128.20.98:http Route 100 0 0 -> 61.128.20.93:http Route 100 0 0 -> 61.128.20.81:http Route 100 0 0 -> 61.128.20.82:http Route 100 0 0 | IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 61.128.10.4:9000 wlc persistent 50 -> 61.128.10.16:9000 Route 100 0 0 -> 61.128.10.17:9000 Route 100 0 0 -> 61.128.10.5:9000 Route 100 0 0 -> 61.128.10.8:9000 Route 100 0 0 …………………………… TCP 61.128.20.124:http wlc persistent 20 -> 61.128.20.98:http Route 100 821 1437 -> 61.128.20.93:http Route 100 823 1562 -> 61.128.20.82:http Route 100 823 1336 -> 61.128.20.81:http Route 100 825 1033 |
本日志由 flyinweb 于 2009-10-12 15:39:33 发表,目前已经被浏览 818 次,评论 1 次;
引用通告:http://www.517sou.net/Article/289/Trackback.ashx
To: jconsole不能打开,大概两种可能: 1 没有启用独占模式,如O
两个实例分别放在不同的 datadir 里面,会方便很多
今天遇到了“Cleanup failed to process the following paths:-
谢谢分享.有帮助.
根据inotify + rsync的思路,现在有了个c++版本的同步程序,只需指
真是有耐心呀。我做了个pdf 文件 在上面的网站可以下载