###zookeeper设置用户验证访问权限 ####首先你要弄明白zookeeper的验证 先给一个例子
#zkCli.sh
create /mynode content digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:cdrwa
创建一个节点,给予内容的同时,赋上对应的用户和密码验证方式。
digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:cdrwa
这段就是重要的授权控制语句,它由三部分构成:scheme : id : permissions 关于这三个字段的意义和介绍,可以看这里 ####生成自己的帐号和密码
获取zookeeper的运行jar包加载路径
#ps axu|grep zookeeper
#java -cp ./zookeeper-3.4.8.jar:./lib/log4j-1.2.16.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider user:password
user:password->user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=
这样就得到这里的帐号和密码了。 ####设置zookeeper中的数据验证
#zkCli.sh
setAcl /marathon digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:cdrwa
setAcl /mesos digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:cdrwa
####mesos和marathon的配置变更 zk://username:password@servers/path 不过这里提一点,mesos,marathon目前只支持digest的验证模式,代码里有写
marathon关于zookeeper的验证测试
zookeeper的验证参考资料https://cwiki.apache.org/confluence/display/ZOOKEEPER/Client-Server+mutual+authentication
###mesos的验证 除了保护zookeeper的数据,我们还要去保护mesos的master和slave,当然framework也是需要的。mesos-master需要加装三个地方的验证:
为此你需要增加以下的验证配置:
--acls=file:///etc/mesos/acl.json
框架注册的房屋i控制
--authenticate_slaves=true
开启agent的验证
--authenticate_http_readonly=true
开启webui和接口的只读验证
--authenticate_http_readwrite=true
开启webui和接口的读写验证
--authenticate=true
开启框架注册验证
--credentials=file:///etc/mesos/cred.json
验证帐号和密码的描述文件
###agent的验证
--default_role=your_role
默认的角色
--credential=file:///etc/mesos/cred.json
密钥文件
--docker_config=/root/.docker/config.json
私有镜像库的验证
这个要求Mesos版本要高一点,应该最起码要到1.0.x以上 ###famework的验证
--http_credentials user:password
webui的帐号和密码
--mesos_authentication
--mesos_authentication_principal mesos-user
marathon框架所要使用的验证帐号,在mesos-master那边的帐号
--mesos_authentication_secret_file /etc/marathon/marathon.secret
所需的密码文件,注意文件里必须是一个裸密码,最好用echo -n "passsword">marathon.secret生成,里面不能有特殊字符
一定要注意自己用的相关软件的版本,marathon和mesos的版本中配置变更很频繁,遇到问题要多看help和相关的配置文档 一些验证方面的资料
###遇到的问题
I0308 11:17:00.726840 28051 slave.cpp:954] Authenticating with master master@192.168.119.132:5050
I0308 11:17:00.727154 28051 slave.cpp:965] Using default CRAM-MD5 authenticatee
I0308 11:17:00.727298 28051 slave.cpp:927] Detecting new master
I0308 11:17:00.727375 28062 authenticatee.cpp:121] Creating new client SASL connection
W0308 11:17:05.731155 28050 slave.cpp:1068] Authentication timed out
W0308 11:17:05.731495 28050 slave.cpp:1013] Failed to authenticate with master master@192.168.119.132:5050: Authentication discarded
I0308 11:17:15.281414 28059 slave.cpp:954] Authenticating with master master@192.168.119.132:5050
I0308 11:17:15.281615 28059 slave.cpp:965] Using default CRAM-MD5 authenticatee
I0308 11:17:15.281926 28066 authenticatee.cpp:121] Creating new client SASL connection
W0308 11:17:20.285291 28066 slave.cpp:1068] Authentication timed out
W0308 11:17:20.285634 28066 slave.cpp:1013] Failed to authenticate with master master@192.168.119.132:5050: Authentication discarded
W0308 11:13:04.119566 28067 slave.cpp:1013] Failed to authenticate with master master@192.168.119.132:5050: Authentication error: Failed to get list of mechanisms: SASL(-4): no mechanism available: Internal Error -4 in server.c near line 1757
mesos的验证方式采用的cram-md5的方式,在mesos的Master和slave和marathon的机器上都要安装cyrus-sasl-md5和cyrus-sasl-scram,否则就成了这个样子,客户端和服务端无法给出一个统一的验证方式,进而无法进行验证。
他妈的的我今天又遇到这个问题了,该安装的软件包都安装了,还是不行,最后你猜怎么着,这破玩意需要你配置好你本地的dns,就是你的/etc/resolv.conf,fuck,我有点略怀疑人生了都,居然这鬼还会影响到。
http://mesos.apache.org/documentation/latest/authentication/
https://mesosphere.github.io/marathon/docs/framework-authentication.html