• CentOS 8.2上安装Apache Cassandra 3.11.9


    在本指南中,您将学习如何在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节点中的现有软件包。

    [root@centos8 ~]# hostnamectl set-hostname cassandra.liangglab.cn
    
    [root@cassandra ~]# dnf update -y
    ...
    Upgraded:
      bind-export-libs-32:9.11.13-5.el8_2.x86_64
      gnutls-3.6.8-11.el8_2.x86_64
      grub2-common-1:2.02-87.el8_2.noarch
      grub2-pc-1:2.02-87.el8_2.x86_64
      grub2-pc-modules-1:2.02-87.el8_2.noarch
      grub2-tools-1:2.02-87.el8_2.x86_64
      grub2-tools-efi-1:2.02-87.el8_2.x86_64
      grub2-tools-extra-1:2.02-87.el8_2.x86_64
      grub2-tools-minimal-1:2.02-87.el8_2.x86_64
      kernel-tools-4.18.0-193.14.2.el8_2.x86_64
      kernel-tools-libs-4.18.0-193.14.2.el8_2.x86_64
      libnghttp2-1.33.0-3.el8_2.1.x86_64
      microcode_ctl-4:20191115-4.20200609.1.el8_2.x86_64
      python3-perf-4.18.0-193.14.2.el8_2.x86_64
    
    Installed:
      kernel-4.18.0-193.14.2.el8_2.x86_64
      kernel-core-4.18.0-193.14.2.el8_2.x86_64
      kernel-modules-4.18.0-193.14.2.el8_2.x86_64
    
    Removed:
      kernel-4.18.0-147.5.1.el8_1.x86_64
      kernel-core-4.18.0-147.5.1.el8_1.x86_64
      kernel-modules-4.18.0-147.5.1.el8_1.x86_64
    
    Complete!
    

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    [root@cassandra ~]# systemctl status cassandra.service
    ● cassandra.service - LSB: distributed storage system for structured data
       Loaded: loaded (/etc/rc.d/init.d/cassandra; generated)
       Active: active (running) since Sun 2020-12-20 15:52:58 CST; 56s ago
         Docs: man:systemd-sysv-generator(8)
     Main PID: 36189 (java)
        Tasks: 64 (limit: 49642)
       Memory: 2.3G
       CGroup: /system.slice/cassandra.service
               └─36189 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64/jre/bin/jav>
    
    Dec 20 15:52:54 cassandra.liangglab.cn systemd[1]: Starting LSB: distributed storage system>
    Dec 20 15:52:54 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session o>
    Dec 20 15:52:58 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session c>
    
    或者
    [root@cassandra ~]# service cassandra status
    ● cassandra.service - LSB: distributed storage system for structured data
       Loaded: loaded (/etc/rc.d/init.d/cassandra; generated)
       Active: active (running) since Sun 2020-12-20 15:52:58 CST; 38s ago
         Docs: man:systemd-sysv-generator(8)
     Main PID: 36189 (java)
        Tasks: 64 (limit: 49642)
       Memory: 2.3G
       CGroup: /system.slice/cassandra.service
               └─36189 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64/jre/bin/jav>
    
    Dec 20 15:52:54 cassandra.liangglab.cn systemd[1]: Starting LSB: distributed storage system>
    Dec 20 15:52:54 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session o>
    Dec 20 15:52:58 cassandra.liangglab.cn runuser[36112]: pam_unix(runuser:session): session c>
    Dec 20 15:52:58 cassandra.liangglab.cn cassandra[36100]: Starting Cassandra: OK
    Dec 20 15:52:58 cassandra.liangglab.cn systemd[1]: Started LSB: distributed storage system
    

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

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

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

    [root@cassandra ~]# nodetool status
    Datacenter: datacenter1
    =======================
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
    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配置文件的副本,如下所示。

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

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

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

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

    authenticator: AllowAllAuthenticator
    authorizer: AllowAllAuthorizer
    roles_validity_in_ms: 2000
    permissions_validity_in_ms: 2000
    

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

    authenticator: org.apache.cassandra.auth.PasswordAuthenticator
    authorizer: org.apache.cassandra.auth.CassandraAuthorizer
    roles_validity_in_ms: 0
    permissions_validity_in_ms: 0
    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    【7】从cqlsh提示符退出。

    lianglab@cqlsh> exit
    [root@cassandra conf]# 
    

    【8】Apache Cassandra节点已配置。

    结论:

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

  • 相关阅读:
    jquery 表单清空
    CK-Editor content.replace
    CSS DIV HOVER
    返回上一页并刷新与返回上一页不刷新代码
    Google Java编程风格指南中文版
    编程常见英语词汇
    教你如何删除tomcat服务器的stdout.log文件
    @Autowired @Resource @Qualifier的区别
    JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
    4.11 application未注入报错解决
  • 原文地址:https://www.cnblogs.com/lianglab/p/14163965.html
Copyright © 2020-2023  润新知