Cassandra基礎(1)—— Casasndra集群搭建
Cassandra基礎(2)—— Casasndra使用及其數(shù)據(jù)類型
本文將介紹Cassandra的搭建和使用
單節(jié)點Cassandra
Cassandra最大的特點就是分布式敛腌,所以啟動單節(jié)點Cassandra不論是開發(fā)還是實戰(zhàn)都沒有意義惫皱,都是多節(jié)點尤莺。單節(jié)點最大的作用就是安裝Cassandra,可以提供cqlsh命令行工具缝裁,能夠作為客戶端去連接Cassandra。
安裝
方式一:按官網(wǎng)教程安裝韩脑,提供Debian和RPM兩種包.
方式二:在mac上,可以使用brew工具安裝段多,命令如下:
brew install cassandra
/*
安裝后的目錄:
安裝目錄:/usr/local/Cellar/cassandra/
Properties: /usr/local/etc/cassandra
Logs: /usr/local/var/log/cassandra
Data: /usr/local/var/lib/cassandra/data
*/
多節(jié)點Cassandra
Docker 搭建
官方docker鏡像默認不啟用任何安全驗證壮吩,且未提供相應的env variables。
有兩種方式去開啟認證:
方式一:在官方鏡像的基礎上制作自己的鏡像鸭叙,繼承官方鏡像,并用RUN命令開啟相關配置沈贝,再build得到開啟了認證的新鏡像。
編寫Dockerfile如下:
FROM cassandra:3.11.2
# Authentication backend, implementing IAuthenticator; used to identify users
# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
# PasswordAuthenticator}.
#
# - AllowAllAuthenticator performs no checks - set it to disable authentication.
# - PasswordAuthenticator relies on username/password pairs to authenticate
# users. It keeps usernames and hashed passwords in system_auth.roles table.
# Please increase system_auth keyspace replication factor if you use this authenticator.
# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)
RUN echo "authenticator: PasswordAuthenticator" >> /etc/cassandra/cassandra.yaml
# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
# CassandraAuthorizer}.
#
# - AllowAllAuthorizer allows any action to any user - set it to disable authorization.
# - CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
# increase system_auth keyspace replication factor if you use this authorizer.
RUN echo "authorizer: CassandraAuthorizer" >> /etc/cassandra/cassandra.yaml
# Part of the Authentication & Authorization backend, implementing IRoleManager; used
# to maintain grants and memberships between roles.
# Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
# which stores role information in the system_auth keyspace. Most functions of the
# IRoleManager require an authenticated login, so unless the configured IAuthenticator
# actually implements authentication, most of this functionality will be unavailable.
#
# - CassandraRoleManager stores role data in the system_auth keyspace. Please
# increase system_auth keyspace replication factor if you use this role manager.
RUN echo "role_manager: CassandraRoleManager" >> /etc/cassandra/cassandra.yaml
然后build,得到加入開啟認證相關環(huán)境變量的cassandra鏡像学歧。
docker build -t cassandra:3.11.2_auth .
用該鏡像啟動的容易的cassandra.yaml文件內有我們設置的環(huán)境變量。
接下來就可以進行集群搭建了:
// 先啟動種子節(jié)點
docker run --name cassandra_node1 -d -v /var/docker-volume/cassandra:/var/lib/cassandra -e CASSANDRA_CLUSTER_NAME="test_cassandra_cluster" -e CASSANDRA_BROADCAST_ADDRESS=172.31.18.97 -p 7000:7000 -p 9160:9160 -p 9042:9042 docker.sunseaiot.cn/cassandra:3.11.2_auth
// 再啟動非種子節(jié)點
docker run --name cassandra_node2 -d -v /var/docker-volume/cassandra:/var/lib/cassandra -e CASSANDRA_CLUSTER_NAME="test_cassandra_cluster" -e CASSANDRA_BROADCAST_ADDRESS=172.31.19.18 -e CASSANDRA_SEEDS=172.31.18.97 -p 7000:7000 -p 9160:9160 -p 9042:9042 docker.sunseaiot.cn/cassandra:3.11.2_auth
docker run --name cassandra_node3 -d -v /var/docker-volume/cassandra:/var/lib/cassandra -e CASSANDRA_CLUSTER_NAME="test_cassandra_cluster" -e CASSANDRA_BROADCAST_ADDRESS=172.31.16.140 -e CASSANDRA_SEEDS=172.31.18.97 -p 7000:7000 -p 9160:9160 -p 9042:9042 docker.sunseaiot.cn/cassandra:3.11.2_auth
// 查看集群狀態(tài)
nodetool status
// 集群搭好后袁铐,可用默認的超級用戶Cassandra(密碼cassandra)登陸
cqlsh 172.31.18.97 -u cassandra -p cassandra
// 然后提升`system_auth`keyspace的復制因子(通常為節(jié)點數(shù))
ALTER KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
// 創(chuàng)建一個新的超級用戶替代默認的超級用戶cassandra(密碼cassandra)
CREATE USER sunseaiot WITH PASSWORD 'sunseaiot' SUPERUSER ;
// 最后切換用戶登陸伺帘,刪除默認超級用戶
DROP USER cassandra;
更多細節(jié)參考文檔