经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Cassandra » 查看文章
CentOS 8.2上安装Apache Cassandra 3.11.9
来源:cnblogs  作者:亮亮实验室  时间:2020/12/21 14:59:32  对本文有异议

在本指南中,您将学习如何在CentOS 8上安装Apache Cassandra Node以及如何配置初始安全性配置。

什么是Apache Cassandra?


Apache Cassandra是一个免费的开放源代码,分布式,宽列存储的NoSQL数据库管理系统,在处理许多商用服务器上的大量数据,提供高可用性而没有单点故障。Cassandra通过异步无主复制为跨多个数据中心的集群提供强大的支持,从而允许所有客户端进行低延迟的操作 维基百科

Cassandra最初是在Facebook上使用Java编程语言开发的,以增强其Inbox搜索功能。Facebook于2008年7月在Google代码上将Cassandra作为开源项目发布。2009年3月,它成为Apache Incubator项目。

Cassandra现在由Apache Software Foundation维护,并根据Apache License 2.0进行分发。

Apache Cassandra中的功能


Apache Cassandra的主要功能是。

  • 分布式-集群中的每个节点都具有相同的角色
  • 支持复制和多数据中心复制
  • 高度可扩展
  • 容错-数据自动复制到多个节点以实现容错
  • MapReduce支持-Cassandra具有Hadoop集成,并具有MapReduce支持
  • 查询语言-Cassandra引入了Cassandra查询语言(CQL)

环境规格:


  • CPU:3.4 GHz(2核)
  • 内存:2 GB
  • 储存空间:20 GB
  • 作业系统:CentOS 8.2
  • 主机名: cassandra.liangglab.cn
  • IP地址:192.168.6.65/24

第一步:更新主机名和CentOS 8软件包


使用ssh工具以root用户身份与cassandra.liangglab.cn连接。

作为最佳实践,请更新我们的CentOS 8节点中的现有软件包。

  1. [root@centos8 ~]# hostnamectl set-hostname cassandra.liangglab.cn
  2. [root@cassandra ~]# dnf update -y
  3. ...
  4. Upgraded:
  5. bind-export-libs-32:9.11.13-5.el8_2.x86_64
  6. gnutls-3.6.8-11.el8_2.x86_64
  7. grub2-common-1:2.02-87.el8_2.noarch
  8. grub2-pc-1:2.02-87.el8_2.x86_64
  9. grub2-pc-modules-1:2.02-87.el8_2.noarch
  10. grub2-tools-1:2.02-87.el8_2.x86_64
  11. grub2-tools-efi-1:2.02-87.el8_2.x86_64
  12. grub2-tools-extra-1:2.02-87.el8_2.x86_64
  13. grub2-tools-minimal-1:2.02-87.el8_2.x86_64
  14. kernel-tools-4.18.0-193.14.2.el8_2.x86_64
  15. kernel-tools-libs-4.18.0-193.14.2.el8_2.x86_64
  16. libnghttp2-1.33.0-3.el8_2.1.x86_64
  17. microcode_ctl-4:20191115-4.20200609.1.el8_2.x86_64
  18. python3-perf-4.18.0-193.14.2.el8_2.x86_64
  19. Installed:
  20. kernel-4.18.0-193.14.2.el8_2.x86_64
  21. kernel-core-4.18.0-193.14.2.el8_2.x86_64
  22. kernel-modules-4.18.0-193.14.2.el8_2.x86_64
  23. Removed:
  24. kernel-4.18.0-147.5.1.el8_1.x86_64
  25. kernel-core-4.18.0-147.5.1.el8_1.x86_64
  26. kernel-modules-4.18.0-147.5.1.el8_1.x86_64
  27. Complete!

【1】使用uname命令验证活动内核的版本。

  1. [root@cassandra ~]# uname -r
  2. 4.18.0-193.el8.x86_64

【2】验证CentOS操作系统的版本。

  1. [root@cassandra ~]# cat /etc/redhat-release
  2. CentOS Linux release 8.2.2004 (Core)

第二步:添加Apache Cassandra官方Yum存储库


Apache Software Foundation为每个版本的Cassandra软件提供了官方的yum存储库。

Cassandra下载页面所述,我们将添加Apache Cassandra yum存储库。

如下所示为Cassendra创建一个repo文件。

  1. [root@cassandra ~]# vi /etc/yum.repos.d/cassandra.repo

在此文件中添加以下指令。

  1. [cassandra]
  2. name=Apache Cassandra
  3. baseurl=https://downloads.apache.org/cassandra/redhat/311x/
  4. gpgcheck=1
  5. repo_gpgcheck=1
  6. gpgkey=https://downloads.apache.org/cassandra/KEYS

在这里,311x是Apache Cassandra的相应版本,即3.11。在撰写本文时,Apache Cassandra 3.11是最新版本。因此,我们正在使用它。如果要安装其他任何版本的Apache Cassandra,则应相应更新repo文件中的版本号。

为新安装的Cassandra存储库构建yum缓存。如果要求,请接受GPG密钥

  1. [root@cassandra ~]# dnf makecache
  2. Apache Cassandra 515 B/s | 833 B 00:01
  3. Apache Cassandra 201 kB/s | 256 kB 00:01
  4. Importing GPG key 0xF2833C93:
  5. Userid : "Eric Evans <eevans@sym-link.com>"
  6. Fingerprint: CEC8 6BB4 A0BA 9D0F 9039 7CAE F835 8FA2 F283 3C93
  7. From : https://downloads.apache.org/cassandra/KEYS
  8. Importing GPG key 0x8D77295D:
  9. Userid : "Eric Evans <eevans@sym-link.com>"
  10. Fingerprint: C496 5EE9 E301 5D19 2CCC F2B6 F758 CE31 8D77 295D
  11. From : https://downloads.apache.org/cassandra/KEYS
  12. Importing GPG key 0x2B5C1B00:
  13. Userid : "Sylvain Lebresne (pcmanus) <sylvain@datastax.com>"
  14. Fingerprint: 5AED 1BF3 78E9 A19D ADE1 BCB3 4BD7 36A8 2B5C 1B00
  15. From : https://downloads.apache.org/cassandra/KEYS
  16. Importing GPG key 0x0353B12C:
  17. Userid : "T Jake Luciani <jake@apache.org>"
  18. Fingerprint: 514A 2AD6 31A5 7A16 DD00 47EC 749D 6EEC 0353 B12C
  19. From : https://downloads.apache.org/cassandra/KEYS
  20. Importing GPG key 0xFE4B2BDA:
  21. Userid : "Michael Shuler <michael@pbandjelly.org>"
  22. Fingerprint: A26E 528B 271F 19B9 E5D8 E19E A278 B781 FE4B 2BDA
  23. From : https://downloads.apache.org/cassandra/KEYS
  24. Importing GPG key 0x7E3E87CB:
  25. Userid : "Michael Semb Wever <mick@thelastpickle.com>"
  26. Fingerprint: A4C4 65FE A0C5 5256 1A39 2A61 E913 35D7 7E3E 87CB
  27. From : https://downloads.apache.org/cassandra/KEYS
  28. Importing GPG key 0xB7F6840C:
  29. Userid : "Alex Petrov <oleksandr.petrov@gmail.com>"
  30. Fingerprint: 9E66 CEC6 106D 578D 0B1E B9BF F100 0962 B7F6 840C
  31. From : https://downloads.apache.org/cassandra/KEYS
  32. Importing GPG key 0xAF30F054:
  33. Userid : "Jordan West <jwest@apache.org>"
  34. Fingerprint: C400 9872 C59B 4956 1310 D966 D006 2876 AF30 F054
  35. From : https://downloads.apache.org/cassandra/KEYS
  36. Apache Cassandra 1.6 kB/s | 3.6 kB 00:02
  37. Dependencies resolved.
  38. [root@cassandra ~]# dnf clean all
  39. 45 files removed
  40. [root@cassandra ~]# dnf repolist
  41. repo id repo name
  42. AppStream CentOS-8 - AppStream - mirrors.tongdun.cn
  43. base CentOS-8 - Base - mirrors.tongdun.cn
  44. cassandra Apache Cassandra
  45. epel Extra Packages for Enterprise Linux 8 - x86_64
  46. epel-debuginfo Extra Packages for Enterprise Linux 8 - x86_64 - Debug
  47. epel-source Extra Packages for Enterprise Linux 8 - x86_64 - Source
  48. extras CentOS-8 - Extras - mirrors.tongdun.cn
  49. [root@cassandra ~]#

CentOS 8上已安装Apache Cassandra 3.11 yum存储库。

第三步:CentOS 8上安装Apache Cassandra

Apache Cassandra需要JVM(Java虚拟机)才能运行。虽然,我们可以在CentOS 8节点上显式安装Java,但是如果我们使用dnf命令安装Cassandra ,它将自动安装所有必需的依赖项,包括Java。

【1】我们使用dnf命令直接在CentOS 8上安装Apache Cassandra 。

  1. [root@cassandra src]# dnf install -y cassandra
  2. Last metadata expiration check: 0:15:35 ago on Sun 20 Dec 2020 03:25:22 PM CST.
  3. Dependencies resolved.
  4. ============================================================================================
  5. Package Arch Version Repository Size
  6. ============================================================================================
  7. Installing:
  8. cassandra noarch 3.11.9-1 cassandra 29 M
  9. Installing dependencies:
  10. copy-jdk-configs noarch 3.7-1.el8 AppStream 27 k
  11. java-1.8.0-openjdk x86_64 1:1.8.0.272.b10-1.el8_2 AppStream 326 k
  12. java-1.8.0-openjdk-headless x86_64 1:1.8.0.272.b10-1.el8_2 AppStream 34 M
  13. javapackages-filesystem noarch 5.3.0-1.module_el8.0.0+11+5b8c10bd AppStream 30 k
  14. lksctp-tools x86_64 1.0.18-3.el8 base 100 k
  15. ttmkfdir x86_64 3.0.9-54.el8 AppStream 62 k
  16. tzdata-java noarch 2020d-1.el8 AppStream 190 k
  17. xorg-x11-fonts-Type1 noarch 7.5-19.el8 AppStream 522 k
  18. Enabling module streams:
  19. javapackages-runtime 201801
  20. Transaction Summary
  21. ============================================================================================
  22. Install 9 Packages
  23. Total download size: 64 M
  24. Installed size: 158 M
  25. Downloading Packages:
  26. (1/9): lksctp-tools-1.0.18-3.el8.x86_64.rpm 4.9 MB/s | 100 kB 00:00
  27. (2/9): copy-jdk-configs-3.7-1.el8.noarch.rpm 1.0 MB/s | 27 kB 00:00
  28. (3/9): java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64.rpm 7.9 MB/s | 326 kB 00:00
  29. (4/9): javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b 1.9 MB/s | 30 kB 00:00
  30. (5/9): ttmkfdir-3.0.9-54.el8.x86_64.rpm 7.4 MB/s | 62 kB 00:00
  31. (6/9): tzdata-java-2020d-1.el8.noarch.rpm 12 MB/s | 190 kB 00:00
  32. (7/9): xorg-x11-fonts-Type1-7.5-19.el8.noarch.rpm 17 MB/s | 522 kB 00:00
  33. (8/9): java-1.8.0-openjdk-headless-1.8.0.272.b10-1.el8_2.x8 66 MB/s | 34 MB 00:00
  34. (9/9): cassandra-3.11.9-1.noarch.rpm 89 kB/s | 29 MB 05:36
  35. Installed:
  36. cassandra-3.11.9-1.noarch
  37. copy-jdk-configs-3.7-1.el8.noarch
  38. java-1.8.0-openjdk-1:1.8.0.272.b10-1.el8_2.x86_64
  39. java-1.8.0-openjdk-headless-1:1.8.0.272.b10-1.el8_2.x86_64
  40. javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch
  41. lksctp-tools-1.0.18-3.el8.x86_64
  42. ttmkfdir-3.0.9-54.el8.x86_64
  43. tzdata-java-2020d-1.el8.noarch
  44. xorg-x11-fonts-Type1-7.5-19.el8.noarch
  45. Complete!

cqlsh(Cassandra查询语言外壳)需要Python才能运行。因此,我们也需要安装Python。

【2】Apache Cassandra仅与Python 2.7兼容。因此,我们在CentOS 8节点上安装了相同的组件。

  1. [root@cassandra ~]# dnf install -y python2
  2. Last metadata expiration check: 0:26:10 ago on Sun 20 Dec 2020 03:25:22 PM CST.
  3. Dependencies resolved.
  4. ============================================================================================
  5. Package Arch Version Repository Size
  6. ============================================================================================
  7. .............
  8. Installed:
  9. python2-2.7.17-1.module_el8.2.0+381+9a5b3c3b.x86_64
  10. python2-libs-2.7.17-1.module_el8.2.0+381+9a5b3c3b.x86_64
  11. python2-pip-9.0.3-16.module_el8.2.0+381+9a5b3c3b.noarch
  12. python2-pip-wheel-9.0.3-16.module_el8.2.0+381+9a5b3c3b.noarch
  13. python2-setuptools-39.0.1-11.module_el8.2.0+381+9a5b3c3b.noarch
  14. python2-setuptools-wheel-39.0.1-11.module_el8.2.0+381+9a5b3c3b.noarch
  15. Complete!

【3】Cassandra服务基于SystemV,因此,我们必须使用旧命令来启用和启动它。

  1. [root@cassandra ~]# service cassandra start
  2. Reloading systemd: [ OK ]
  3. Starting cassandra (via systemctl): [ OK ]
  4. [root@cassandra ~]# chkconfig cassandra on

【4】验证cassandra.service的状态。

  1. [root@cassandra ~]# systemctl status cassandra.service
  2. cassandra.service - LSB: distributed storage system for structured data
  3. Loaded: loaded (/etc/rc.d/init.d/cassandra; generated)
  4. Active: active (running) since Sun 2020-12-20 15:52:58 CST; 56s ago
  5. Docs: man:systemd-sysv-generator(8)
  6. Main PID: 36189 (java)
  7. Tasks: 64 (limit: 49642)
  8. Memory: 2.3G
  9. CGroup: /system.slice/cassandra.service
  10. └─36189 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64/jre/bin/jav>
  11. Dec 20 15:52:54 cassandra.liangglab.cn systemd[1]: Starting LSB: distributed storage system>
  12. Dec 20 15:52:54 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session o>
  13. Dec 20 15:52:58 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session c>
  14. 或者
  15. [root@cassandra ~]# service cassandra status
  16. cassandra.service - LSB: distributed storage system for structured data
  17. Loaded: loaded (/etc/rc.d/init.d/cassandra; generated)
  18. Active: active (running) since Sun 2020-12-20 15:52:58 CST; 38s ago
  19. Docs: man:systemd-sysv-generator(8)
  20. Main PID: 36189 (java)
  21. Tasks: 64 (limit: 49642)
  22. Memory: 2.3G
  23. CGroup: /system.slice/cassandra.service
  24. └─36189 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64/jre/bin/jav>
  25. Dec 20 15:52:54 cassandra.liangglab.cn systemd[1]: Starting LSB: distributed storage system>
  26. Dec 20 15:52:54 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session o>
  27. Dec 20 15:52:58 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session c>
  28. Dec 20 15:52:58 cassandra.liangglab.cn cassandra[36100]: Starting Cassandra: OK
  29. Dec 20 15:52:58 cassandra.liangglab.cn systemd[1]: Started LSB: distributed storage system

【5】查看cassandra.service的端口监听信息。

  1. [root@cassandra conf]# ss -anplt| grep java
  2. LISTEN 0 16384 127.0.0.1:9042 0.0.0.0:* users:(("java",pid=37328,fd=128))
  3. LISTEN 0 500 127.0.0.1:7000 0.0.0.0:* users:(("java",pid=37328,fd=108))
  4. LISTEN 0 50 127.0.0.1:7199 0.0.0.0:* users:(("java",pid=37328,fd=75))
  5. LISTEN 0 50 127.0.0.1:7621 0.0.0.0:* users:(("java",pid=37328,fd=76))
  6. [root@cassandra conf]# netstat -anptl| grep java
  7. tcp 0 0 127.0.0.1:9042 0.0.0.0:* LISTEN 37328/java
  8. tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 37328/java
  9. tcp 0 0 127.0.0.1:7199 0.0.0.0:* LISTEN 37328/java
  10. tcp 0 0 127.0.0.1:7621 0.0.0.0:* LISTEN 37328/java
  11. [root@cassandra conf]#
  12. 说明:
  13. 7199 JMX监控端口
  14. 7000 节点间群集
  15. 9042 CQL本地传输端口
  16. 9160 Thrift客户端API
  17. 1024--65355 JMX所需的随机端口。

【6】使用nodetool命令来验证Cassandra集群的状态。

  1. [root@cassandra ~]# nodetool status
  2. Datacenter: datacenter1
  3. =======================
  4. Status=Up/Down
  5. |/ State=Normal/Leaving/Joining/Moving
  6. -- Address Load Tokens Owns (effective) Host ID Rack
  7. UN 127.0.0.1 70.73 KiB 256 100.0% 1e86a261-9df5-49a5-ad76-a6b87f2b7364 rack1

Apache Cassandra已安装在CentOS 8节点上。

第四步:配置Apache Cassandra节点安全性

Apache Cassandra的配置文件位于/etc/cassandra/conf目录中,安全的做法是在开始编辑原始配置文件之前先对其进行备份。

创建原始cassandra.yaml配置文件的副本,如下所示。

  1. [root@cassandra ~]# cd /etc/cassandra/conf/
  2. [root@cassandra conf]# cp cassandra.yaml cassandra.yaml.bak

【1】使用vim编辑器编辑该文件。

  1. [root@cassandra conf]# vi /etc/cassandra/conf/cassandra.yaml

【2】在此文件中找到以下参数,配置密码认证器

  1. authenticator: AllowAllAuthenticator
  2. authorizer: AllowAllAuthorizer
  3. roles_validity_in_ms: 2000
  4. permissions_validity_in_ms: 2000

【3】如下更新它们的值。

  1. authenticator: org.apache.cassandra.auth.PasswordAuthenticator
  2. authorizer: org.apache.cassandra.auth.CassandraAuthorizer
  3. roles_validity_in_ms: 0
  4. permissions_validity_in_ms: 0

【3】参数描述:参考-Cassandra 管理员指南

  1. authenticator
  2. 后端认证,实现IAuthenticator;用于标识用户,Cassandra提供了org.apache.cassandra.auth。{AllowAllAuthenticatorPasswordAuthenticator}。
  3. AllowAllAuthenticator不执行任何检查 - 将其设置为禁用身份验证。
  4. PasswordAuthenticator依赖用户名/密码对来验证用户。它将用户名和散列密码保存在system_auth.credentials表中。如果使用此验证器,请增加system_auth键空间复制因子。如果使用PasswordAuthenticator,还必须使用CassandraRoleManager(见下文)
  5. 默认值: AllowAllAuthenticator
  6. authorizer
  7. 后端授权,实现IAuthorizer;用于限制访问/提供权限,Cassandra提供了org.apache.cassandra.auth。{AllowAllAuthorizerCassandraAuthorizer}。
  8. AllowAllAuthorizer 允许任何用户的任何操作 - 将其设置为禁用授权。
  9. CassandraAuthorizer system_auth.permissions表中存储权限。如果使用此授权器,请增加system_auth键空间复制因子。
  10. 默认值: AllowAllAuthorizer
  11. roles_validity_in_ms
  12. 角色缓存的有效期(获取授权角色可能是一个昂贵的操作,取决于角色管理器,CassandraRoleManager是一个示例)授予的角色缓存为AuthenticatedUser中的已验证会话,并在此处指定的时间段后成为资格(async)重新加载。默认为2000,设置为0以完全禁用缓存。将自动禁用AllowAllAuthenticator
  13. 默认值: 2000
  14. permissions_validity_in_ms
  15. 权限缓存的有效期(获取权限可以是一个昂贵的操作,取决于授权人,CassandraAuthorizer isone示例)。默认为2000,设置为0以禁用。将为AllowAllAuthorizer自动禁用。
  16. 默认值: 2000

【4】检查一下我们修改的配置内容中。

  1. [root@cassandra conf]# cat /etc/cassandra/conf/cassandra.yaml |egrep "^authenticator|^authorizer|^roles_validity_in_ms|^permissions_validity_in_ms"
  2. authenticator: org.apache.cassandra.auth.PasswordAuthenticator
  3. authorizer: org.apache.cassandra.auth.CassandraAuthorizer
  4. roles_validity_in_ms: 0
  5. permissions_validity_in_ms: 0
  6. [root@cassandra conf]#

【5】重新启动Cassandra服务以使更改生效。

  1. [root@cassandra conf]# systemctl restart cassandra.service

第五步:Apache Cassandra创建一个Admin用户

【1】使用Cassandra默认用户名/密码连接到cqlsh提示符。

  1. [root@cassandra conf]# cqlsh -u cassandra -p cassandra
  2. Connected to Test Cluster at 127.0.0.1:9042.
  3. [cqlsh 5.0.1 | Cassandra 3.11.9 | CQL spec 3.4.4 | Native protocol v4]
  4. Use HELP for help.

【2】使用以下命令创建一个管理员用户,从cqlsh提示符退出。

  1. cassandra@cqlsh> CREATE ROLE lianglab WITH PASSWORD = 'lianglab@123' AND SUPERUSER = true AND LOGIN = true;
  2. cassandra@cqlsh> exit

【3】使用新的管理员用户连接到cqlsh

  1. [root@cassandra conf]# cqlsh -u lianglab -p lianglab@123
  2. Connected to Test Cluster at 127.0.0.1:9042.
  3. [cqlsh 5.0.1 | Cassandra 3.11.9 | CQL spec 3.4.4 | Native protocol v4]
  4. Use HELP for help.

【4】为了获得更好的安全性,建议删除/禁用默认用户。请撤销cassendra用户的管理员角色和登录权限。

  1. lianglab@cqlsh> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;

【5】撤消cassendra用户的所有权限。

  1. lianglab@cqlsh> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;

【6】将所有权限授予新的管理员用户。

  1. lianglab@cqlsh> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO lianglab;

【7】从cqlsh提示符退出。

  1. lianglab@cqlsh> exit
  2. [root@cassandra conf]#

【8】Apache Cassandra节点已配置。

结论:

在以上指南中,您学习了如何在CentOS 8上安装Apache Cassandra节点,我们还配置了建议的安全性配置。Cassandra: The Definitive Guide: Distributed Data at Web Scale 2nd Edition杰夫·卡彭特是一本非常好的书,建议看看一下。

原文链接:http://www.cnblogs.com/lianglab/p/14163965.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号