开始使用 Apache 卡桑德拉 Fedora

[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。 有关如何更改配置的详细信息,请参阅 上游文档.

使用用户和密码控制访问

默认情况下,身份验证被禁用。 要启用它,请按照下列步骤操作:

  1. 默认情况下,验证器选项设置为 AllowAllAuthenticator。 将 cassandra.yaml 文件中的验证器选项更改为 PasswordAuthenticator:
authenticator: PasswordAuthenticator
  1. 重新启动服务。
$ sudo systemctl restart cassandra
  1. 使用默认的超级用户名和密码启动 cqlsh:
$ cqlsh -u cassandra -p cassandra
  1. 创建一个新的超级用户:
cqlsh> CREATE ROLE <new_super_user> WITH PASSWORD = '<some_secure_password>' 
    AND SUPERUSER = true 
    AND LOGIN = true;
  1. 以新创建的超级用户身份登录:
$ cqlsh -u <new_super_user> -p <some_secure_password>
  1. 无法删除超级用户。 要取消帐户,请将密码更改为长且难以理解的密码,并将用户的状态更改为 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]

Related Posts