[ad_1]
NoSQL 如今,数据库与更传统的关系数据库一样受欢迎。 之一 最流行的 NoSQL 系统 是 Apache 卡桑德拉。 它旨在处理大数据,并且可以跨大量服务器进行扩展。 这使其具有弹性和高可用性。
这个包比较新 Fedora, 因为它是在 Fedora 26.下面的文章是一个简短的教程来设置Cassandra Fedora 对于开发环境。 生产部署应使用不同的设置来强化服务。
安装和配置 Cassandra
数据库包集在 Fedora的稳定存储库是 cassandra 包中的客户端工具。 公共库位于 cassandra-java-libs 包中(客户端和服务器都需要)。 数据库最重要的部分,守护进程,在 cassandra-server 包中可用。 通过在终端中运行以下命令,可以列出更多支持包。
dnf list cassandra*
首先,安装并启动服务:
$ sudo dnf install cassandra cassandra-server $ sudo systemctl start cassandra
要使服务在引导时自动启动,请运行:
$ sudo systemctl enable cassandra
最后,使用客户端测试服务器初始化:
$ cqlsh Connected to Test Cluster at 127.0.0.1:9042. [cqlsh 5.0.1 | Cassandra 3.11.1 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cqlsh> CREATE KEYSPACE k1 WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }; cqlsh> USE k1; cqlsh:k1> CREATE TABLE users (user_name varchar, password varchar, gender varchar, PRIMARY KEY (user_name)); cqlsh:k1> INSERT INTO users (user_name, password, gender) VALUES ('John', 'test123', 'male'); cqlsh:k1> SELECT * from users; user_name | gender | password -----------+--------+---------- John | male | test123 (1 rows)
要配置服务器,请编辑文件 /etc/cassandra/cassandra.yaml。 有关如何更改配置的详细信息,请参阅 上游文档.
使用用户和密码控制访问
默认情况下,身份验证被禁用。 要启用它,请按照下列步骤操作:
- 默认情况下,验证器选项设置为 AllowAllAuthenticator。 将 cassandra.yaml 文件中的验证器选项更改为 PasswordAuthenticator:
authenticator: PasswordAuthenticator
- 重新启动服务。
$ sudo systemctl restart cassandra
- 使用默认的超级用户名和密码启动 cqlsh:
$ cqlsh -u cassandra -p cassandra
- 创建一个新的超级用户:
cqlsh> CREATE ROLE <new_super_user> WITH PASSWORD = '<some_secure_password>' AND SUPERUSER = true AND LOGIN = true;
- 以新创建的超级用户身份登录:
$ cqlsh -u <new_super_user> -p <some_secure_password>
- 无法删除超级用户。 要取消帐户,请将密码更改为长且难以理解的密码,并将用户的状态更改为 NOSUPERUSER:
cqlsh> ALTER ROLE cassandra WITH PASSWORD='SomeNonsenseThatNoOneWillThinkOf' AND SUPERUSER=false;
启用对服务器的远程访问
编辑 /etc/cassandra/cassandra.yaml 文件,修改以下参数:
listen_address: external_ip rpc_address: external_ip seed_provider/seeds: "<external_ip>"
然后重启服务:
$ sudo systemctl 重启卡桑德拉
其他常用配置
还有很多更常见的配置参数。 例如,要设置集群名称,该名称必须对集群中的所有节点保持一致:
cluster_name: 'Test Cluster'
data_file_directories 选项设置服务将写入数据的目录。 以下是未设置时使用的默认值。 如果可能,请将其设置为仅用于存储 Cassandra 数据的磁盘。
data_file_directories: - /var/lib/cassandra/data
要设置用于存储数据的磁盘类型(SSD 或旋转):
disk_optimization_strategy: ssd|spinning
运行 Cassandra 集群
Cassandra 的主要功能之一是能够在多节点设置中运行。 集群设置带来以下好处:
- 容错性: 自动将数据复制到多个节点以实现容错。 此外,它支持跨多个数据中心的复制。 您可以在不停机的情况下更换故障节点。
- 去中心化: 没有单点故障,没有网络瓶颈,集群中的每个节点都是相同的。
- 可扩展性和弹性: 可以运行数千个具有 PB 级数据的节点。 随着新机器的添加,读取和写入吞吐量都线性增加,不会导致应用程序停机或中断。
以下部分描述了如何设置一个简单的两节点集群。
清除现有数据
首先,如果服务器现在正在运行或以前曾经运行过,您必须删除所有现有数据(首先进行备份)。 这是因为所有节点必须具有相同的集群名称,并且最好从默认的测试集群名称中选择一个不同的名称。
在每个节点上运行以下命令:
$ sudo systemctl stop cassandra $ sudo rm -rf /var/lib/cassandra/data/system/*
如果您部署一个大型集群,您可以通过自动化使用 Ansible.
配置集群
要设置集群,请编辑主配置文件 /etc/cassandra/cassandra.yaml。 修改这些参数:
- cluster_name:集群的名称。
- num_tokens:Cassandra 实例中的虚拟节点数。 此选项对数据进行分区并将数据分布在整个集群中。 推荐值为 256。
- 种子:集群中每个节点的 IP 地址的逗号分隔列表。
- listen_address:服务绑定到其他节点的 IP 地址或主机名。 默认为localhost,需要改成节点的IP地址。
- rpc_address:客户端连接的监听地址(CQL 协议)。
- endpoint_snitch:设置为实现 IEndpointSnitch 的类。 Cassandra 使用 snitches 来定位节点和路由请求。 默认为 SimpleSnitch,但对于本练习,将其更改为更适合生产环境的 GossipingPropertyFileSnitch:
- SimpleSnitch:用于公共云中的单数据中心部署或单区域。 无法识别数据中心或机架信息。 它将策略顺序视为邻近,在禁用读取修复时可以提高缓存局部性。
- GossipingPropertyFileSnitch:推荐用于生产。 本地节点的机架和数据中心在 cassandra-rackdc.properties 文件中定义,并通过 gossip 传播到其他节点。
- auto_bootstrap:配置文件中没有这个参数,所以添加它并设置为false。 它使新的(非种子)节点自动将正确的数据迁移到自己。
下面是两节点集群的配置文件。
节点 1:
cluster_name: 'My Cluster' num_tokens: 256 seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider - seeds: 10.0.0.1, 10.0.0.2 listen_address: 10.0.0.1 rpc_address: 10.0.0.1 endpoint_snitch: GossipingPropertyFileSnitch auto_bootstrap: false
节点 2:
cluster_name: 'My Cluster' num_tokens: 256 seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider - seeds: 10.0.0.1, 10.0.0.2 listen_address: 10.0.0.2 rpc_address: 10.0.0.2 endpoint_snitch: GossipingPropertyFileSnitch auto_bootstrap: false
启动集群
最后一步是启动集群的每个实例。 首先启动种子实例,然后启动其余节点。
$ sudo systemctl start cassandra
检查集群状态
总之,您可以使用 nodetool 实用程序检查集群状态:
$ sudo nodetool status Datacenter: datacenter1 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.0.0.2 147.48 KB 256 ? f50799ee-8589-4eb8-a0c8-241cd254e424 rack1 UN 10.0.0.1 139.04 KB 256 ? 54b16af1-ad0a-4288-b34e-cacab39caeec rack1 Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
容器中的卡桑德拉
Linux 容器正变得越来越流行。 您可以在此处找到 Cassandra 容器映像 码头工人中心:
centos/cassandra-3-centos7
为此目的启动一个容器很容易,而无需触及系统的其余部分。 首先,安装并运行 Docker 守护进程:
$ sudo dnf install docker $ sudo systemctl start docker
接下来,拉取图像:
$ sudo docker pull centos/cassandra-3-centos7
现在为数据准备一个目录:
$ sudo mkdir data $ sudo chown 143:143 data
最后,用几个参数启动容器。 容器使用准备好的目录将数据存储到并创建用户和数据库。
$ docker run --name cassandra -d -e CASSANDRA_ADMIN_PASSWORD=secret -p 9042:9042 -v `pwd`/data:/var/opt/rh/sclo-cassandra3/lib/cassandra:Z centos/cassandra-3-centos7
现在,您可以在容器中运行服务,同时将数据存储到当前工作目录的数据目录中。 如果您的主机系统上未安装 cqlsh 客户端,请使用以下命令运行映像提供的客户端:
$ docker exec -it cassandra 'bash' -c 'cqlsh '`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cassandra`' -u admin -p secret'
结论
Cassandra 的维护者 Fedora 寻求共同维护者以帮助保持包裹新鲜 Fedora. 如果您想提供帮助,只需向他们发送电子邮件。
[ad_2]