# Ranger命令行安装 如果您希望使用命令行的方式部署Ranger,请按照本章节步骤安装。 ## 前提 在开始前,请配置yum源,安装lava命令行管理工具,还应检查是否有所需的Python和Java环境。 首先用`root`用户登录到`ranger1` ```shell ssh root@ranger1 ``` 从yum源所在机器`host1`获取repo文件 ```shell sudo scp root@host1:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo ``` 追加yum源所在机器信息到/etc/hosts文件 安装lava命令行管理工具 ```shell sudo yum clean all sudo yum makecache sudo yum install lava ``` 检查`Python2`环境,执行下述命令能看到Python的对应版本,期望版本为2.x,已验证版本为2.7.5 ```shell python ``` 检查`Java`环境,执行下述命令能看到Java的对应版本,期望版本为1.7以上,已验证版本为1.8.0_332 ```shell java -version ``` Ranger Admin的安装需要依赖外部数据库做元数据存储,推荐使用Skylab平台本身的Postgres数据库,同时还需要对应的数据库驱动,可以通过yum安装`lavalib`获取Postgres数据库连接驱动,放到所需位置,如当前例子放在`/usr/share/java`目录下。 ```shell # 通过yum源安装lavalib sudo yum install lavalib # 将驱动放到所需目录 sudo mv /usr/local/oushu/lavalib/postgresql-42.2.8.jar /usr/share/java/postgresql-42.2.8.jar ``` ###### Kerberos认证依赖(可选) 若开启Kerberos认证,Kerberos安装部署请参考:[Kerberos 安装](../kerberos/installation-kerberos.rst)。 Kerberos 服务地址假定为`kdc1`,登录到kdc1机器上 ```shell ssh kdc1 mkdir -p /etc/security/keytabs ``` 创建Ranger Admin和Ranger UserSync相关服务主体,生成的密钥rangeradmin.keytab和rangerusersync.keytab。 > 注意:这里对应的hostname不管大小写,都需要用小写。 ```shell kadmin.local addprinc -randkey HTTP/ranger1@OUSHU.COM addprinc -randkey rangeradmin/ranger1@OUSHU.COM addprinc -randkey rangerlookup/ranger1@OUSHU.COM ktadd -norandkey -k /etc/security/keytabs/rangeradmin.keytab HTTP/ranger1@OUSHU.COM ktadd -norandkey -k /etc/security/keytabs/rangeradmin.keytab rangeradmin/ranger1@OUSHU.COM ktadd -norandkey -k /etc/security/keytabs/rangeradmin.keytab rangerlookup/ranger1@OUSHU.COM addprinc -randkey rangerusersync/ranger1@OUSHU.COM ktadd -norandkey -k /etc/security/keytabs/rangerusersync.keytab rangerusersync/ranger1@OUSHU.COM exit ``` `ranger1`上需要一个开启kerberos功能的`core-site.xml`文件,我们创建在`/usr/local/oushu/conf/ranger`目录下 ```shell ssh root@ranger1 mkdir -p /usr/local/oushu/conf/ranger touch /usr/local/oushu/conf/ranger/core-site.xml ``` `core-site.xml`文件内至少包含如下两项: ```xml          hadoop.security.auth_to_local     DEFAULT               hadoop.security.authentication     kerberos      ``` ## 安装 ### Ranger Admin安装 ```shell # 使用yum源进行安装 sudo yum install -y ranger-admin-2.3.0-1.noarch ``` ### Ranger UserSync安装 ```shell # 使用yum源进行安装 sudo yum install -y ranger-usersync-2.3.0-1.noarch ``` ## 配置 ### Ranger Admin配置 修改在`/usr/local/oushu/ranger-admin_2.3.0`目录下的`install.properties`文件初始化配置 ```shell sudo vi /usr/local/oushu/ranger-admin_2.3.0/install.properties ``` 在`install.properties`文件末尾追加如下配置: ```shell PYTHON_COMMAND_INVOKER=python2 DB_FLAVOR=POSTGRES SQL_CONNECTOR_JAR=/usr/share/java/postgresql-42.2.8.jar db_root_user=rangerUser db_root_password=Ran5ger@DB db_host=localhost:4432 db_name=ranger db_user=rangerUser db_password=Ran5ger@DB audit_store= policymgr_external_url=http://ranger1:6080 rangerAdmin_password=ranger1@China rangerUsersync_password=ranger1@China rangerTagsync_password=ranger1@China keyadmin_password=ranger1@China cred_keystore_filename= ``` | 配置名 | 配置描述 | | ----------------------- | ---------------------------------------------------------------- | | PYTHON_COMMAND_INVOKER | 指明使用的Python版本 | | DB_FLAVOR | 指明使用数据库类型,可以是MYSQL\|ORACLE\|POSTGRES\|MSSQL\|SQLA,这里推荐使用POSTGRES | | SQL_CONNECTOR_JAR | 数据库连接驱动所在位置 | | db_root_user | 数据库root用户名,推荐按组件使用不同的数据库用户进行管理 | | db_root_password | 数据库root用户密码 | | db_host | 数据库主机、端口 | | db_name | ranger连接的数据库,该库如果不存在需要自行创建 | | db_user | 管理该数据库用户,推荐按组件使用不同的数据库用户进行管理 | | db_password | 管理该数据库用户密码 | | audit_store | 审计日志, 如果没有安装solr,对应的属性值为空即可 | | policymgr_external_url | 策略管理配置,配置ip和端口,开启kerberos时不能使用localhost | | rangerAdmin_password | Ranger Admin密码配置。默认为空,可以不配,不配时密码为admin | | rangerUsersync_password | Ranger Usersync密码配置。默认为空,可以不配,对应的内部组件该属性也要为空 | | rangerTagsync_password | Ranger Tagsync密码配置,此密码暂无实际作用 | | keyadmin_password | Ranger KMS密码配置,此密码暂无实际作用 | | cred_keystore_filename | Ranger Admin的密码库文件路径,可暂时为空 | > 注意:rangerAdmin_password、rangerUsersync_password、rangerTagsync_password和keyadmin_password的值, > 要么全部为空会全部使用对应的默认密码,要么应该全部自定义填写对应的密码,且密码大于8位字符包含大小写字母、数字和特殊字符, > 否则自定义填写的密码并不会生效。 ###### Kerberos配置(可选) 继续在`install.properties`文件末尾追加如下配置: ```shell spnego_principal=HTTP/ranger1@OUSHU.COM spnego_keytab=/etc/security/keytabs/rangeradmin.keytab admin_principal=rangeradmin/ranger1@OUSHU.COM admin_keytab=/etc/security/keytabs/rangeradmin.keytab lookup_principal=rangerlookup/ranger1@OUSHU.COM lookup_keytab=/etc/security/keytabs/rangeradmin.keytab hadoop_conf=/usr/local/oushu/conf/ranger ``` | 配置名 | 配置描述 | | ---------------- | --------------------------------------------- | | spnego_principal | Ranger Admin对外提供HTTP服务的kerberos服务主体 | | spnego_keytab | Ranger Admin对外提供HTTP服务的kerberos服务主体的密钥 | | admin_principal | Ranger Admin作为Server端鉴权的kerberos服务主体 | | admin_keytab | Ranger Admin作为Server端鉴权的kerberos服务主体的密钥 | | lookup_principal | Ranger Admin作为Client端进行连接组件测试的kerberos服务主体 | | lookup_keytab | Ranger Admin作为Client端进行连接组件测试的kerberos服务主体的密钥 | | hadoop_conf | 开启kerberos功能的`core-site.xml`文件所在目录 | ### Ranger UserSync配置 修改在`/usr/local/oushu/ranger-usersync_2.3.0`目录下的`install.properties`文件初始化配置 ```shell sudo vi /usr/local/oushu/ranger-usersync_2.3.0/install.properties ``` 在`install.properties`文件末尾追加如下配置: ###### 1)同步unix用户 ```shell POLICY_MGR_URL = http://ranger1:6080 SYNC_INTERVAL = 1 logdir=logs SYNC_SOURCE = unix unix_user=usersync unix_group=usersync rangerUsersync_password=ranger1@China ``` | 配置名 | 配置描述 | | ----------------------- | --------------------------------------------------------------------------------------- | | POLICY_MGR_URL | 配置Ranger Admin的访问地址,开启kerberos时不能使用localhost | | SYNC_INTERVAL | 同步间隔时间,同步unix时最小间隔为1分钟 | | logdir | 配置usersync的log路径 | | SYNC_SOURCE | 同步源系统类型 | | unix_user | usersync程序运行的用户 | | unix_group | usersync程序运行的用户组 | | rangerUsersync_password | Ranger Usersync用户的密码,此密码应与Ranger Admin中`install.properties`的`rangerUsersync_password`相同 | ###### 2)同步ldap用户 ```shell POLICY_MGR_URL = http://ranger1:6080 SYNC_INTERVAL = 1 logdir=logs SYNC_SOURCE = ldap SYNC_LDAP_URL=ldap://localhost:389 SYNC_LDAP_BIND_DN=cn=admin,dc=example,dc=com SYNC_LDAP_BIND_PASSWORD=Ran5ger@LDAP SYNC_LDAP_SEARCH_BASE=ou=People,dc=example,dc=com rangerUsersync_password=ranger1@China ``` | 配置名 | 配置描述 | | ----------------------- | --------------------------------------------------------------------------------------- | | POLICY_MGR_URL | 配置Ranger Admin的访问地址,开启kerberos时不能使用localhost | | SYNC_INTERVAL | 同步间隔时间,同步LDAP时最小间隔为1小时 | | logdir | 配置usersync的log路径 | | SYNC_SOURCE | 同步源系统类型 | | SYNC_LDAP_URL | LDAP服务的地址 | | SYNC_LDAP_BIND_DN | 连接LDAP进行用户和用户组查询的DN | | SYNC_LDAP_BIND_PASSWORD | 用于连接LDAP的DN对应的密码 | | SYNC_LDAP_SEARCH_BASE | LDAP中用户和用户组的搜索域 | | rangerUsersync_password | Ranger Usersync用户的密码,此密码应与Ranger Admin中`install.properties`的`rangerUsersync_password`相同 | ###### Kerberos配置(可选) 继续在`install.properties`文件末尾追加如下配置: ```shell usersync_principal=rangerusersync/ranger1@OUSHU.COM usersync_keytab=/etc/security/keytabs/rangerusersync.keytab hadoop_conf=/usr/local/oushu/conf/ranger ``` | 配置名 | 配置描述 | | ------------------ | ---------------------------------- | | usersync_principal | Ranger Usersync的kerberos服务主体 | | usersync_keytab | Ranger Usersync的kerberos服务主体的密钥 | | hadoop_conf | 开启kerberos功能的`core-site.xml`文件所在目录 | ## 启动 ### Ranger Admin启动 ##### 1.执行初始化操作 ```shell cd /usr/local/oushu/ranger-admin_2.3.0/ sudo su root -c "export JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 | sed -nE 's|.*java.home = (.*)|\1|p');./setup.sh" ``` 初始化结果如下则成功: ```shell 2022-11-03 15:07:37,458 [I] Checking connection passed. 2022-11-03 15:07:37,458 [I] RANGER_ADMIN_ENV_PATH : /usr/local/oushu/ranger-admin_2.3.0 2022-11-03 15:07:37,458 [I] env_file_path : /usr/local/oushu/ranger-admin_2.3.0/ranger-admin-env*.sh Installation of Ranger PolicyManager Web Application is completed. ``` ##### 2.修改配置文件 配置存储在`/usr/local/oushu/ranger-admin_2.3.0/conf`目录下的`ranger-admin-site.xml`文件 ```shell # 编辑 sudo vi /usr/local/oushu/ranger-admin_2.3.0/conf/ranger-admin-site.xml ``` 如无特殊需求,初始化之后配置无需改动即可启动 ##### 3.启动进程 ```shell sudo ranger-admin start ``` 或者 ```shell sudo /usr/local/oushu/ranger-admin_2.3.0/ews/ranger-admin-services.sh start ``` 运行结果如下则成功: ```shell [root@ranger1 ranger-admin_2.3.0]$ sudo ranger-admin start Starting Apache Ranger Admin Service Apache Ranger Admin Service with pid 14240 has started. ``` ### Ranger UserSync启动 ##### 1.执行初始化操作 ```shell cd /usr/local/oushu/ranger-usersync_2.3.0/ sudo su root -c "export JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 | sed -nE 's|.*java.home = (.*)|\1|p');./setup.sh" ``` ##### 2.修改配置文件 配置存储在`/usr/local/oushu/ranger-usersync_2.3.0/conf`目录下的`ranger-ugsync-site.xml`文件 ```shell # 编辑 sudo vi /usr/local/oushu/ranger-usersync_2.3.0/conf/ranger-ugsync-site.xml ``` 需要修改`ranger.usersync.enabled`为`true`才能使同步生效 ```shell ranger.usersync.enabled true ``` ##### 3.启动进程 ```shell sudo ranger-usersync start ``` 或者 ```shell sudo /usr/local/oushu/ranger-usersync_2.3.0/ranger-usersync-services.sh start ``` 运行结果如下则成功: ```shell [root@ranger1 ranger-usersync_2.3.0]$ sudo ranger-usersync start Starting Apache Ranger Usersync Service Apache Ranger Usersync Service with pid 6026 has started. ``` ## 检查状态 ### Ranger Admin检查 1.登录机器ranger1,通过`Jps`查看进程,看到`EmbeddedServer`进程即为Ranger Admin在启动中 ```shell [root@ranger1 ~]$ sudo jps 14240 EmbeddedServer 28974 Jps ``` 2.根据`install.properties`配置中`policymgr_external_url`访问Web UI界面,本例中访问地址为`http://192.168.1.11:6080`, 默认账号为`admin`,密码根据`install.properties`配置中`rangerAdmin_password`获得。 ![](./images/webui.png) ### 修改Ranger Admin初始密码 登录Ranger Admin之后,需要把admin用户的密码改成安全性较强的密码,要求包含有大小写字母、数字、特殊字符的8位以上的密码,比如Ad4min@Ranger。 进入ranger页面后,我们可以到Settings > Users/Groups/Roles > User 页面查看用户详情。 ![](./images/changepass-1.png) 在用户详情中的`Change Password`标签,输入新密码与确认密码,点击确定即可。 ![](./images/changepass-2.png) ### Ranger UserSync检查 1.登录机器ranger1,通过`Jps`查看进程,看到`UnixAuthenticationService`进程即为Ranger UserSync在启动中 ```shell [root@ranger1 ranger-usersync_2.3.0]$ sudo jps 14240 EmbeddedServer 7432 Jps 6026 UnixAuthenticationService ``` 2.访问Web UI界面,本例中访问地址为`http://192.168.1.11:6080`,点击Audit可以在`Login Sessions`内看到`rangerusersync`的登录信息,在`User Sync`内看到`rangerusersync`用户的信息同步情况,如下图所示: ![](./images/synclogin.png) ![](./images/syncuser.png) ## 常用命令 ### Ranger Admin命令 首先用`root`用户登录到`ranger1` ```shell ssh root@ranger1 ``` - 启动 ```shell sudo ranger-admin start ``` - 停止 ```shell sudo ranger-admin stop ``` - 重启 ```shell sudo ranger-admin restart ``` ### Ranger UserSync命令 首先用`root`用户登录到`ranger1` ```shell ssh root@ranger1 ``` - 启动 ```shell sudo ranger-usersync start ``` - 停止 ```shell sudo ranger-usersync stop ``` - 重启 ```shell sudo ranger-usersync restart ``` ## 注册到Skylab(可选) 需要将安装Ranger的机器通过机器管理添加到Skylab中,如果您尚未添加,请参考[注册机器](../start/install-lava.md)。 在`ranger1`节点修改`/usr/local/oushu/lava/conf`目录下的`server.json`文件,替换localhost为Skylab的服务器IP,具体Skylab的基础服务lava安装步骤请参考:[lava安装](../start/start-installation.rst)。 ```json { "server": "localhost:1612",   "admin": "localhost:1652" } ``` 创建一个request文件,包含ranger cluster信息: ```shell touch ~/ranger-register.json ``` 编辑json文件内容如下: ```json { "data": { "name": "rangerserver", "group_roles": [ { "role": "ranger.admin", "cluster_name": "rangeradmin", "group_name": "rangeradmin", "machines": [ { "id": 1, "name": "ranger1", "subnet": "lava", "data_ip": "192.168.1.11", "manage_ip": "192.168.1.11", "assist_port": 1622, "ssh_port": 22 } ] }, { "role": "ranger.usersync", "cluster_name": "rangerusersync", "group_name": "rangerusersync", "machines": [ { "id": 1, "name": "ranger1", "subnet": "lava", "data_ip": "192.168.1.11", "manage_ip": "192.168.1.11", "assist_port": 1622, "ssh_port": 22 } ] } ] } } ``` 配置文件说明,整个json分为3部分: - 第一部分name,为集群名称,个性化填写。 - 第二部分为group_roles,对于Ranger为2个角色,`ranger.admin`和`ranger.usersync`,不可修改。 - 第三部分,为每个角色添加机器,需要添加的机器信息可以通过下面的方式获得。 在平台基础组件lava所安装的机器执行(端口和用户名按照lava配置修改): ```shell psql lavaadmin -p 4432 -U oushu -c "select m.id,m.name,s.name as subnet,m.private_ip as data_ip,m.public_ip as manage_ip,m.assist_port,m.ssh_port from machine as m,subnet as s where m.subnet_id=s.id;" ``` 获取到所需的机器信息,根据服务角色对应的节点,将机器信息添加到machines数组中。 在`ranger1`节点调用lava命令注册集群: ```shell lava login -u oushu -p Oushu6@China -T {租户id} lava onprem-register service -s Ranger -f ~/ranger-register.json ``` 如果返回值为: ```shell Add service by self success ``` 则表示注册成功,如果有错误信息,请根据错误信息处理。 从页面登录后,在自动部署模块对应服务中可以查看到新添加的集群,同时列表中会实时监控ranger进程在机器上的状态。 ![](./images/skylabui.png)