nginxs

运维博客

02-zookeeper集群搭建

2016/05/14 13:16 于 安全 0

微信 微博 豆瓣 人人

首先准备三个节点
192.168.1.127
192.168.1.128
192.168.1.129

先安装zookeeper
cd /usr/local/src/
wget http://apache.fayea.com/zookeeper/zookeeper-3.5.1-alpha/zookeeper-3.5.1-alpha.tar.gztar zxf zookeeper-3.5.1-alpha.tar.gz
mv zookeeper-3.5.1-alpha /usr/local/zookeeper

更改三个节点配置
server.1=192.168.1.127:2008:6008
server.服务器编号=服务器地址:LF通信端口:选举端口

cd /usr/local/zookeeper && mkdir -p /data/zookeeper
vim conf/zoo.cfg

    tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.127:2008:6008
server.2=192.168.1.128:2008:6008
server.3=192.168.1.129:2008:6008

启动前两个节点

     ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
/usr/bin/java
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

你会发现有报错是因为其他节点没有起来

    2016-05-14 12:05:18,540 [myid:3] - WARN  [QuorumPeer[myid=3](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@459] - Cannot open channel to 2 at election address /192.168.199.22
2:6008
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:444)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:485)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:513)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:919)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:1040)

查看集群状态

echo 'stat'|nc 192.168.1.128 2181

Zookeeper version: 3.5.1-alpha-1693007, built on 07/28/2015 07:19 GMT
Clients:
/192.168.1.128:182810

Latency min/avg/max: 0/0/0
Received: 1

Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: follower
Node count: 5

查看节点角色[root@test-node4 zookeeper]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
/usr/bin/java
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
zookeeper

zookeeper源码安装

00-zookeeper启动报错: myid file is missing 和 Problem starting AdminServer

02-zookeeper集群搭建

zookeeperzookeeper快速安装zookeeper集群快速搭建

00-zookeeper启动报错: myid file is missing 和 Problem starting AdminServer

2016/05/14 08:00 于 数据分析 0

微信 微博 豆瓣 人人

zookeeper集群节点启动时候会读取“dataDir”目录下的id,所以必须在对应节点的“dataDir”目录下创建“myid”文件,里面填写serverid
举例:
vim conf/zoo.cfg

    tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.128:2008:6008
server.2=192.168.1.128:2008:6008
server.3=192.168.1.129:2008:6008

我在这里就需要在
“192.168.1.127”节点echo "1" >/data/zookeeper/myid
“192.168.1.128”节点echo "2" >/data/zookeeper/myid
“192.168.1.129”节点echo "3" >/data/zookeeper/myid

    2016-05-14 12:01:01,079 [myid:] - INFO  [main:QuorumPeerConfig@114] - Reading configuration from: /usr/local/zookeeper/bin/../conf/zoo.cfg
2016-05-14 12:01:01,085 [myid:] - INFO [main:QuorumPeerConfig@316] - clientPortAddress is 0.0.0.0/0.0.0.0:2181
2016-05-14 12:01:01,085 [myid:] - INFO [main:QuorumPeerConfig@320] - secureClientPort is not set
2016-05-14 12:01:01,089 [myid:] - ERROR [main:QuorumPeerMain@86] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/local/zookeeper/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:135)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
Caused by: java.lang.IllegalArgumentException: myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.checkValidity(QuorumPeerConfig.java:637)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:508)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:348)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:131)
... 2 more
Invalid config, exiting abnormally

zookeeper的管理员端口被占用,需要修改配置里的“zookeeper.admin.serverPort=8080”,默认8080没有写出来,只要改为一个没使用端口即可

    2016-05-14 12:17:36,385 [myid:1] - WARN  [main:QuorumPeer@723] - Problem starting AdminServer
org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on address 0.0.0.0, port 8080 and command URL /commands
at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:100)
at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:721)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:183)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:120)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:444)
at sun.nio.ch.Net.bind(Net.java:436)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
at org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:315)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.Server.doStart(Server.java:235)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:96)
... 4 more
org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on address 0.0.0.0, port 8080 and command URL /commands

zookeeper

zookeeper源码安装

00-zookeeper启动报错: myid file is missing 和 Problem starting AdminServer

zookeeperzookeeper启动失败zookeeper端口占用zookeeper myid file is missingzookeeper Problem starting AdminServer

阿里云基础架构使用分享

2016/05/14 00:06 于 公有云 0

微信 微博 豆瓣 人人

介绍随着公有云发展,电商大户亚马逊公有云盈利快速上升,使得公有云市场得到了很大估值。国内也掀起一片”云热潮“。
阿里云算是国内推广和发展的佼佼者,用户量也比较多,整个服务架构现在也慢慢完善。到今年终于凑够了一个基础架构分享给大家

ECS优惠活动连接,一般人找不到啊
http://tb.cn/sI3Hw6x

解释

阿里云基础架构阿里云架构设置阿里云

09-nginx limit_req和limit_conn_zone

2016/05/13 23:29 于 web 0

微信 微博 豆瓣 人人

介绍

nginx limit_req和limit_conn_zone两个模块可以有效的帮助你屏蔽一部分恶意请求。

nginx限制请求频率
nginx limit_req用于每个IP的请求频率
超出阈值的请求默认将返回503 (Service Temporarily Unavailable)
rate的单位分为"r/s","r/m"
域声明语法: limit_req_zone key zone=name:size rate=rate;
域调用语法:limit_req zone=name [burst=number] [nodelay];

例1:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #以”$binary_remote_addr“为辨识获取钥匙,定义one为限值域,10m为钥匙桶大小(10兆),1r/s为1次每秒
server { #上面定义就是同一IP的用户每秒仅能请求一次失败返回503
location /search/ {
limit_req_status 599; #指定受限后请求返回httpcode 599
limit_req zone=one burst=5 nodelay; #调用one域,burst=5是5个特权令牌(特权令牌拥有者可以直接请求服务) 超过503,nodelay超过令牌数不等待令牌发送
} #如果不调用nodelay用户会一直等到服务正常相应

例2:
limit_req_zone $server_name zone=perserver:10m rate=10r/s; #这次就是根据用户访问域名限制访问频率
server {
limit_req_log_level error; #指定受限制请求日志级别error
limit_req zone=perip burst=5 nodelay; #如果访问域名$server_name超过10+5次/s就会直接503
}

限制连接数

    limit_conn_zone key zone=name:size; #必须在http级别配置
limit_conn_status code; #限制报错httpcode
limit_conn_log_level info | notice | warn | error; 首先请求日志级别
limit_zone name $variable size; #必须在http级别配置

http {
limit_conn_zone $binary_remote_addr zone=addr:10m; #根据用户ip限制连接数
limit_conn_zone $server_name zone=perserver:10m; #根据用户请求域名限制连接数
...
server {
...
location /download/ {
limit_conn addr 1; #限制同时请求”/download/“目录的连接只有一个
}

nginx教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

nginx limit_req和limit_conn_zonenginx limit_reqnginx limit_conn_zonenginxnginx限制ip请求频率nginx限制ip连接数

04-nginx的root和alias区别

2016/05/12 22:05 于 web 1

微信 微博 豆瓣 人人

介绍

nginx配置文件中常用root指定当前项目根目录
alias也是用来替换用户指定的项目目录的
接下来说一下他们的差别

项目配置文件
[root@localhost webroot]# tree
.
├── code
│   └── test2.html
└── test.html

1 directory, 2 files
[root@localhost webroot]# cat test.html
aaa
[root@localhost webroot]# cat code/test2.html
bbb

nginx配置
alias重定向项目目录
location /code/
{
alias /data/webroot/;
}
访问结果
[root@localhost webroot]# curl http://192.168.1.128/html/test.htmlaaa
访问到文件:/data/webroot/tesst.html

root重定向项目目录

location /code/
{
root /data/webroot/;
}
访问同样结果
[root@localhost webroot]# curl http://192.168.1.128/code/test2.htmlbbb
访问到的文件:/data/webroot/code/tesst2.html

总结
nginx使用root来指定“$document_root”变量,请求访问到的文件是“$document_root”+URL
使用alias访问的就是“$document_root”+"匹配的后面一部分"

绝对路径名对应的当前请求的root或alias指定的路径时,所有的符号链接解析为真正的路径

nginx教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

nginx的root和alias区别root和alias区别nginx的rootnginx的aliasnginx

03-nginx负载均衡

2016/05/07 20:49 于 web 0

微信 微博 豆瓣 人人

介绍
负载均衡是 跨多个应用程序实例优化资源利用率,最大限度地提高吞吐量,降低延迟,并确保容错配置的一个常用的技术。
nginx支持 以下三种算法
round-robin:请求循环发放到每台机器
Least connected :下一个请求将发送给最少活跃连接数的服务器
Session persistence: 散列函数被用于确定应该为下一请求(基于客户端的IP地址)来选择什么样的服务器。



  1. 默认负载算法 round-robin

    http {
    ……
    upstream web1 {
    server 192.168.1.128:9200;
    server 192.168.1.128:3000;
    }
    server {
    listen 80;
    server_name localhost;
    location /
    {
    proxy_pass http://web1;
    }
    }}

在下面面实例中有两个应用,分别是9200端口和3000端口,如果没指定权重默认轮询。将所有的http请求代理到web1

nginx的反向代理包括:http负载均衡,https,fastcgi,uwsgi,SCGI,memcached
假如要给https做负载均衡和代理的话,只要使用“HTTPS”作为协议就可以了。
举例子:
proxy_pass https://web1;

当设置FastCGI,uwsgi,SCGI或memcached的负载均衡时,也需要分别使用fastcgi_pass,uwsgi_pass,scgi_pass和memcached_pass指令。


  1. 最少连接数算法 Least connected

如果想要更加平衡各个应用程序的负载,最少连接算法应该应用在连接和请求时间更长的场合。
使用最少连接数负载算法,nginx将尝试避免单个应用过多的请求导致负载,发送新的请求到请求更少的机器。
要想使用最少连接数负载算法可进行以下配置:
upstream web1 {
least_conn;
server 192.168.1.128:9200;
server 192.168.1.128:3000;
}


  1. 会话保持 Session persistence

大家会发现“round-robin”和“ Least connected ”两种算法之后的请求都可能分布到不通的节点,因此不能保证用户的一直请求到指定服务器。假如你现在每个用户访问都会在nginx服务保存一个session,这样你就需要这个用户之后的访问一直到保存session的机器,这样这个客户端就需要对这个服务器产生“粘性”和“持久性”,在这里我们需要使用 ip hash的算法实现负载。

使用ip-hash,客户端的IP地址被用作散列键来确定应客户的要求进行选择什么样的服务器。此方法确保来自同一客户端的请求将总是被定向到在同一台服务器不可用时除外。
要想使用保持session的持久负载,需要进行一下设置:

        upstream web1 {
ip_hash;
server 192.168.1.128:9200;
server 192.168.1.128:3000;
}

  1. 权重

我们也可以使用权重来影响服务器节点的负载,之前的例子没有指定,所以权重都一样,
当使用“round-robin”算法的时候应用或多或少,这样才可以提供足够请求,并且当请求以均匀的方式进行处理,并完成够快。
权重高的节点分配的请求将比低的节点多,举例子:

    upstream web1 {
server 192.168.1.128:9200 weight=3;
server 192.168.1.128:3000;
}

加入有4个请求将有三个请求到“9200”端口,1个到“3000”端口
同样也可以在最近的版本nginx使用权重在“Least connected”和“ip-hash”负载算法


  1. 健康检查

nginx的健康检查是为了一个检测失败的服务不再分到新的请求。当max_fails设置为0时候关闭健康检查
nginx支持以下健康参数:
max_fails=3 检查到失败3次,判定失败
fail_timeout=2 服务判定失败后等待2秒进行重试此期间服务视为不可用,默认为10秒


  1. 拓展

down 标记服务器为宕机
backup 标记这台服务器为备份服务器,当主服务器不可用是请求此服务器
例子:

    upstream web1 {
server 192.168.1.128:9200 weight=3;
server 192.168.1.129:9200 backup;
server 192.168.1.128:3000;
keepalive 32;
}

keepalive 32; 保持连接数32个
max_conns=333; 限制最大连接数333个

resolver 指定DNS解析域名

    http {
resolver 10.0.0.1;
upstream u {
zone ...;
...
server example.com resolve;
}
}

slow_start=10 设置服务将在规定的10秒内权重0恢复到正常

nginx的upstream模块
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server

nginx教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

nginx负载均衡nginx健康检查nginx负载均衡权重nginx负载算法nginx的upstream模块nginx

02-nginx IO模型

2016/05/07 00:11 于 web 0

微信 微博 豆瓣 人人

介绍

nginx的分为epoll和select两种多路复用IO接口。

select模型

因为select使用了遍历非阻塞式IO,这样就会导致web服务器大量并发情况下遍历量增加,导致文件描述符使用增加,会产生很多的TCP TIME_WAIT, ‘TIME_WAIT’数一旦这个超出系统设置web服务将无法提供服务。
因为select模型是遍历方式所以对于连接数少却异常活跃的客户端很实用,恰巧减少了服务等待,提高效率。

epoll模型

epoll支持linux2.6+的内核,是使用非阻塞式IO,更加有利于对文件描述符利用率

nginx教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

nginx IO模型nginx安装nginx安装基本引导和进程信号nginxnginx教程

web服务ab性能测试

2016/04/25 22:08 于 安全 0

微信 微博 豆瓣 人人

介绍ab是apche自带的一个web服务测试工具,很方便使用。

案例说明

-t 测试时长
-c 请求的并发客户端
-n 请求的次数



  • 10个连接,每次100请求执行5秒
    ab -c 10 -n 100 -t 5 http://192.168.1.128/

    [root@localhost nginx-new]# wc -l logs/access.log 
    101 logs/access.log
    [root@localhost nginx-new]# ab -c 10 -n 100 -t 5 http://192.168.1.128/
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/

    Benchmarking 192.168.1.128 (be patient)
    Completed 5000 requests
    Completed 10000 requests
    Completed 15000 requests
    Completed 20000 requests
    Completed 25000 requests
    Completed 30000 requests
    Completed 35000 requests
    Completed 40000 requests
    Completed 45000 requests
    Completed 50000 requests
    Finished 50000 requests

    Server Software: nginx/1.9.15
    Server Hostname: 192.168.1.128
    Server Port: 80

    Document Path: /
    Document Length: 612 bytes

    Concurrency Level: 10
    Time taken for tests: 4.527 seconds
    Complete requests: 50000
    Failed requests: 0
    Write errors: 0
    Total transferred: 42250000 bytes
    HTML transferred: 30600000 bytes
    Requests per second: 11045.80 [#/sec] (mean)
    Time per request: 0.905 [ms] (mean)
    Time per request: 0.091 [ms] (mean, across all concurrent requests)
    Transfer rate: 9114.94 [Kbytes/sec] received

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 0 0.1 0 2
    Processing: 0 1 0.3 1 8
    Waiting: 0 1 0.3 1 8
    Total: 0 1 0.3 1 9

    Percentage of the requests served within a certain time (ms)
    50% 1 #1ms完成99%请求
    66% 1
    75% 1
    80% 1
    90% 1
    95% 1
    98% 2
    99% 2
    100% 9 (longest request)

web服务ab性能测试ab性能测试ab测试web性能测试

第一章 nginx安装基本引导和进程信号

2016/04/24 11:34 于 web 0

微信 微博 豆瓣 人人

介绍


nginx是一款轻量级的http服务,它可以坐高并发的web服务,也可以做负载均衡,现在进行 nginx基础教程

快速源码安装

    wget http://nginx.org/download/nginx-1.9.15.tar.gz
tar zxf nginx-1.9.15.tar.gz
cd nginx-1.9.15
./configure --prefix=/usr/local/nginx-new --user=www --group=www --with-poll_module\
--with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module \
--with-http_gzip_static_module --with-pcre --with-stream \
--with-http_gunzip_module --with-http_dav_module \
--with-http_geoip_module --with-file-aio
make && make install

进程方式

nginx服务分为master进程和worker进程,master会对worker进程进行配置管理和维护。
nginx采用基于失误的管理模型有效的把请求分配给各个进程,可以使用固定配置也可以自动的调整可用的CPU数量。

默认的nginx配置文件目录"/usr/local/nginx-new/etc/nginx.conf"

启动、停止、重启

    [root@localhost nginx-1.9.15]# /usr/local/nginx-new/sbin/nginx -h
nginx version: nginx/1.9.15
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
-?,-h : help
-v : version
-V : show version and configure options then exit
-t : 测试配置并退出
-T : 测试配置并dump出来退出
-q : 在配置和测试期间不输出错误日志
-s signal :发送一个消息给 master process:进行 stop, quit, reopen, reload
-p prefix : 设置nginx安装目录
-c filename : 指定配置文件(default: conf/nginx.conf)
-g directives :配置文件的指定指令

./sbin/nginx -s { stop|quit | reopen | reload}
stop 快速停止服务(强制停止当前服务)
quit 优雅停止服务(等worker进程任务完成,再退出)
reload reload服务
reopen 重新打开日志文件

nginx进程信号

nginx可以使用进程信号控制,主进程把进程ID写入“xx/nginx.pid"
信号对照表:
TERM,INT 快速关闭
QUIT 优雅关闭
USER1 重新打开日志文件
USER2 升级或者执行文件
WINCH 优雅关闭worker进程

nginx教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

nginx源码安装 nginx安装基本引导nginx进程信号nginxnginx教程

zookeeper源码安装

2016/04/15 22:56 于 数据分析 0

微信 微博 豆瓣 人人


介绍

zookeeper是一个管理分布式服务协调的开源服务,它本身亦是分布式服务。
是hadoop,Hbase,codis服务的重要组件,为分布式应用提供一致性服务:配置维护,域名服务,分布式同步,组服务等。

下载安装包

    yum -y install openjdk
wget http://apache.fayea.com/zookeeper/zookeeper-3.5.1-alpha/zookeeper-3.5.1-alpha.tar.gz
tar zxf zookeeper-3.5.1-alpha.tar.gz
cd zookeeper-3.5.1-alpha

配置文件

这里先使用默认设置

cat ./conf/zoo.cfg

tickTime=2000                           单位毫秒,用来做两次心跳最低超时时间间隔
initLimit=10 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
syncLimit=5 F节点和L节点最多心跳失败5次。
dataDir=/data/zookeeper 内存数据快照到本地的数据,除非特别说明,否则将是更新事物日志。
clientPort=2181 客户端端口

启动服务

zookeeper默认会占用2181,8080,55144三个端口

    [root@salt-master zookeeper-3.5.1-alpha]# ./bin/zkServer.sh 
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.5.1-alpha/bin/../conf/zoo.cfg
Usage: ./bin/zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|restart|status|print-cmd}

[root@salt-master zookeeper-3.5.1-alpha]# ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.5.1-alpha/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

连接测试

 ./bin/zkCli.sh -server 192.168.1.115:2181
Connecting to 192.168.1.115:2181
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.1.115:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: 192.168.1.115:2181(CONNECTED) 4] ls2 /zookeeper
'ls2' has been deprecated. Please use 'ls [-s] path' instead.
[config, quota]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

查看zookeeper服务信息

    [root@salt-master codis]# echo stat | nc 192.168.1.115 2181 
Zookeeper version: 3.5.1-alpha-1693007, built on 07/28/2015 07:19 GMT
Clients:
/192.168.1.115:56637[0](queued=0,recved=1,sent=0)
/192.168.1.115:56608[1](queued=0,recved=160,sent=160)

Latency min/avg/max: 0/0/22
Received: 162
Sent: 161
Connections: 2
Outstanding: 0
Zxid: 0x1
Mode: standalone
Node count: 5

zookeeperzookeeper快速安装

管理