01-集群安裝JDK(普通用戶)

機器部署

集群規劃

我們準備三臺服務器kk01、kk02、kk03,內存4G、硬盤50G、處理器4核心2內核(總8)

kk01使用 192.168.188.128

kk02使用 192.168.188.129

kk03使用 192.168.188.130

模板機準備

我們先創建一臺作為模板機,后續的兩臺采用完整克隆的方式

1)我們配置了模塊機kk01的主機名為 kk01

2)配置了root用戶的密碼123456、創建了普通用戶nhk、密碼123456

3)使用vim 配置了模板機ip地址、網關、DNS等信息

# 2.配置靜態ip  (注意,我們這里剛開始需要使用root用戶來修改)
[nhk@kk01 ~]$ su root
Password: 
[root@kk01 nhk]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 做出如下修改BOOTPROTO=static  # 改為靜態
# 末尾添加如下內容
IPADDR=192.168.188.128
GATEWAY=192.168.188.2
NETMASK=255.255.255.0
DNS1=192.168.188.2
# 重啟網卡
[root@kk01 nhk]# systemctl restart network.service
# 查看當前ip地址
[root@kk01 nhk]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.188.128  netmask 255.255.255.0  broadcast 192.168.188.255inet6 fe80::517f:78e:56fc:d924  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:61:40:47  txqueuelen 1000  (Ethernet)
...

4)關閉模板機 kk01的防火墻

[root@kk01 nhk]# systemctl stop firewalld.service  # 關閉當前防火墻
[root@kk01 nhk]# systemctl disable firewalld.service  # 關閉防火墻開機自啟動
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.# 查看防火墻狀態,看到 inactive (dead) 則證明防火墻成功關閉
[root@kk01 nhk]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)
....

5)修改模板機kk01主機名

# 修改主機名
[root@kk01 nhk]# vim /etc/hostname   # 這種修改方式需要重啟系統,才生效
[root@kk01 nhk]# cat /etc/hostname 
kk01

6)修改hosts文件

[root@kk01 nhk]# vim /etc/hosts192.168.188.128 kk01
192.168.188.129 kk02
192.168.188.130 kk03

7)配置普通用戶(nhk)具有root權限

修改/etc/sudoers文件,在100多行左右,在%wheel下面添加一行內容,如下操作所示

# 配置普通用戶(nhk)具有root權限,方便后期加sudo執行root權限的命令
# 注意:修改這個文件,即使是root用戶也需要 :wq! 強制保存退出
[root@kk01 nhk]# vim /etc/sudoers
# 在%wheel這行下面添加一行 (大概是在100行左右位置)## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALLnhk ALL=(ALL) 	NOPASSWD: ALL 
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

注意:

? nhk ALL=(ALL) NOPASSWD: ALL 這一行不要直接放到root行下面,因為所有用戶都屬于wheel組,你先配置了nhk具有免密功能,但是程序執行到%wheel行時,該功能又被覆蓋回需要密碼。所以nhk要放到%wheel這行下面。

8)創建統一工作目錄

[root@kk01 nhk]# mkdir -p /opt/software/  		 # 軟件安裝目錄、安裝包存放目錄
[root@kk01 nhk]# mkdir -p /opt/data/			 # 數據存儲路徑
[root@kk01 nhk]# 
[root@kk01 nhk]# ll /opt
total 0
drwxr-xr-x. 2 root root 6 Jun 16 15:51 data
drwxr-xr-x. 2 root root 6 Oct 31  2018 rh
drwxr-xr-x. 2 root root 6 Jun 16 15:51 software# 修改文件夾所有者和所屬組 (如果是使用root用戶搭建集群可以忽略)
[root@kk01 nhk]# chown nhk:nhk /opt/software
[root@kk01 nhk]# chown nhk:nhk /opt/data
[root@kk01 nhk]# ll /opt
total 0
drwxr-xr-x. 2 nhk  nhk  6 Jun 16 15:51 data
drwxr-xr-x. 2 root root 6 Oct 31  2018 rh
drwxr-xr-x. 2 nhk  nhk  6 Jun 16 15:51 software

克隆出其他機器

上述配置完以后,將模板機kk01關機,使用VMware的完整克隆方式,克隆出 kk02、kk03,并依次開機,修改kk02、kk03上的ip地址

kk02

# 修改ip
[nhk@kk01 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
做出如下修改IPADDR=192.168.188.129# 重啟網卡服務
[nhk@kk01 ~]$ sudo systemctl restart network
[nhk@kk01 ~]$ ifconfig		# 查看ip
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.188.129  netmask 255.255.255.0  broadcast 192.168.188.255
...# 修改主機名
[nhk@kk01 ~]$ sudo hostnamectl set-hostname kk02		# 這種方式修改主機名無需重啟即可生效
[nhk@kk01 ~]$ hostname		# [nhk@kk01 ~]$ 這里還顯示kk01是這個bash的原因,重新打開bash即可
kk02

kk03

# 修改ip
[nhk@kk01 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
做出如下修改IPADDR=192.168.188.130# 重啟網卡服務
[nhk@kk01 ~]$ sudo systemctl restart network
[nhk@kk01 ~]$ ifconfig		# 查看ip
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.188.130  netmask 255.255.255.0  broadcast 192.168.188.255
...# 修改主機名
[nhk@kk01 ~]$ sudo hostnamectl set-hostname kk03		# 這種方式修改主機名無需重啟即可生效
[nhk@kk01 ~]$ hostname		# [nhk@kk01 ~]$ 這里還顯示kk01是這個bash的原因,重新打開bash即可
kk03

此致,3臺機器準備完成

集群安裝JDK

1)刪除Linux系統自帶JDK

如果安裝的是最小化版本的Linux,則不需要執行此操作

# 需要在所有節點刪除(我們使用的是nhk用戶,必須加sudo)
[nhk@kk01 .ssh]$ sudo rpm -qa | grep -i java
java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
javapackages-tools-3.4.1-11.el7.noarch
tzdata-java-2020a-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
[nhk@kk01 .ssh]$ sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps[nhk@kk02 .ssh]$ sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps[nhk@kk03 ~]$ sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps# 參數說明
(1)rpm -qa:表示查詢所有已經安裝的軟件包
(2)grep -i:表示過濾時不區分大小寫
(3)xargs -n1:表示一次獲取上次執行結果的一個值xargssudo rpm -qa | grep -i java 的結果傳遞給 sudo rpm -e --nodeps-n1 表示將 sudo rpm -qa | grep -i java 的結果傳遞 一個一個傳遞給 sudo rpm -e --nodeps
(4)rpm -e --nodeps:表示卸載軟件

2)上傳壓縮包

將 jdk壓縮包 kk01 的 /opt/software 文件夾下面

[nhk@kk01 software]$ pwd
/opt/software
[nhk@kk01 software]$ rz[nhk@kk01 software]$ ll
total 185340
-rw-r--r--. 1 nhk nhk 189784266 Dec 25  2017 jdk-8u152-linux-x64.tar.gz

3)解壓壓縮包

解壓 jdk 到指定目錄 /opt/software

[nhk@kk01 software]$ tar -zxvf jdk-8u152-linux-x64.tar.gz -C /opt/software[nhk@kk01 software]$ ll
total 185340
drwxr-xr-x. 8 nhk nhk       255 Sep 14  2017 jdk1.8.0_152
-rw-r--r--. 1 nhk nhk 189784266 Dec 25  2017 jdk-8u152-linux-x64.tar.gz	

4)配置普通用戶環境變量

[nhk@kk01 software]$ sudo vim /etc/profile.d/my_env.sh

添加如下內容

# 配置JDK環境
export JAVA_HOME=/opt/software/jdk1.8.0_152				# 導入環境變量
export PATH=$PATH:$JAVA_HOME/bin						# 將環境變量拼接到PATH中

讓環境變量生效(重新載入環境變量)

[nhk@kk01 software]$ source /etc/profile.d/my_env.sh 

5)測試jdk是否安裝成功

能看到jdk相關的版本信息,則說明jdk安裝成功

[nhk@kk01 software]$ java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

6)分發JDK、分發環境

使用我們自定義的分發腳本 xsync

# 分發jdk
[nhk@kk01 software]$ xsync /opt/software/jdk1.8.0_152/# 普通用戶使用 xsync 腳本分發環境變量時,必須加上腳本路徑
#(分發環境時,需要使用sudo,因為/etc目錄只有root用戶才能操作,并且使用xsync腳本還需要加上絕對路徑,因為我們使用sudo命令將權限切換到了root目錄下,而root目錄下沒有xsync腳本)
# 如果不加會報錯 failed: Permission denied (13)
[nhk@kk01 software]$ sudo /home/nhk/bin/xsync /etc/profile.d/my_env.sh 

在集群的其他機器(kk02、kk03)刷新環境變量

[nhk@kk02 ~]$ source /etc/profile.d/my_env.sh 
[nhk@kk03 ~]$ source /etc/profile.d/my_env.sh 

如果我們沒有自定義分發腳本,也可以使用 scp 或 rsync 命令代替,如下

scp -r /opt/software/jdk1.8.0_152/ kk02/opt/software/
scp -r /opt/software/jdk1.8.0_152/ kk03/opt/software/

7)注意事項

? 無論是基于root用戶,還是基于普通用戶nhk,大體上的命令都是相似的,只是在某些情況下普通用戶權限不夠,需要加上sudo來暫時提升權限

8)環境變量說明

? Linux的環境變量可在多個文件中配置,如/etc/profile,/etc/profile.d/*.sh,/.bashrc,/.bash_profile等,下面說明上述幾個文件之間的關系和區別。

? bash的運行模式可分為 login shellnon-login shell

? 例如,我們通過終端,輸入用戶名、密碼,登錄系統之后,得到就是一個login shell。而當我們執行以下命令ssh kk01 command,在kk01執行command的就是一個non-login shell。

登錄 shell 與 非登錄 shell 區別

登錄shell

環境變量加載順序
/etc/profile	~/.bash_profile		~/.bashrc ==> /etc/bashrc ==> /etc/profile.d/*.sh	

非登錄shell

環境變量加載順序~/.bashrc ==> /etc/bashrc ==> /etc/profile.d/*.sh	

注意:

? 如果把環境變量只放到 /etc/profile 中,non-login shell 模式會獲取不到環境變量

? 這兩種shell的主要區別在于,它們啟動時會加載不同的配置文件,login shell啟動時會加載**/etc/profile,/.bash_profile,/.bashrc**。non-login shell啟動時會加載**~/.bashrc**。

而在加載/.bashrc(實際是/.bashrc中加載的/etc/bashrc)或/etc/profile時,都會執行如下代碼片段,

[nhk@kk03 etc]$ pwd
/etc
[nhk@kk03 etc]$ vim /etc/bashrc
  # Only display echos from profile.d scripts if we are no login shell# and interactive - otherwise just process them to set envvarsfor i in /etc/profile.d/*.sh; doif [ -r "$i" ]; thenif [ "$PS1" ]; then. "$i"else. "$i" >/dev/nullfifidone

因此不管是login shell還是non-login shell,啟動時都會加載/etc/profile.d/*.sh中的環境變量。

并且,/etc/profile文件中也告訴我們最好自己在 /etc/profile.d/ 創建一個自定義的環境變量,如下查看

[nhk@kk03 etc]$ vim /etc/profile# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.系統范圍的環境和啟動程序,用于登錄設置
函數和別名放在/etc/bashrc中修改這個文件不是一個好主意,除非你知道你要做什么
正在做什么。創建一個自定義對環境的更改腳本要好得多
/etc/profile.對您的環境進行自定義更改,如下所示
將防止在未來的更新中合并。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41031.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41031.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41031.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 11 新特性 學習筆記

1、字符串原始字面量 R“()”用于取消轉義&#xff0c;可用于路徑表示 運行成功 這兩個RawValue起到描述作用&#xff08;可以不寫&#xff09;&#xff0c;并不參與輸出 注意&#xff0c;這里輸出中文亂碼 2、nullptr NULL在C中表示0&#xff0c;在非C中表示萬能指針 nullpt…

Vue3 使用json編輯器

安裝 npm install json-editor-vue3 main中引入 main.js 中加入下面代碼 import "jsoneditor";不然會有報錯&#xff0c;如jsoneditor does not provide an export named ‘default’。 圖片信息來源-github 代碼示例 <template><json-editor-vue class…

SQL | 分組數據

10-分組數據 兩個新的select子句&#xff1a;group by子句和having子句。 10.1-數據分組 上面我們學到了&#xff0c;使用SQL中的聚集函數可以匯總數據&#xff0c;這樣&#xff0c;我們就能夠對行進行計數&#xff0c;計算和&#xff0c;計算平均數。 目前為止&#xff0c…

ESP-C3入門21. I2C接口點亮1306驅動的OLED屏

ESP-C3入門21. 點亮1306驅動的OLED屏 一、Espressif/ssd1306 驅動簡介1. 驅動介紹2. OLED充電泵概念 二、I2C 通訊步驟1. 初始化 I2C 總線 (i2c_master_init()函數)&#xff1a;2. 創建 I2C 命令句柄 (i2c_cmd_handle_t cmd i2c_cmd_link_create())&#xff1a;3. 發送啟動信號…

【C#】獲取電腦CPU、內存、屏幕、磁盤等信息

通過WMI類來獲取電腦各種信息&#xff0c;參考文章&#xff1a;WMI_04_常見的WMI類的屬性_wmi scsilogicalunit_fantongl的博客-CSDN博客 自己整理了獲取電腦CPU、內存、屏幕、磁盤等信息的代碼 #region 系統信息/// <summary>/// 電腦信息/// </summary>public p…

flinksql報錯 Cannot determine simple type name “org“

flink版本 1.15 報錯內容 2023-08-17 15:46:02 java.lang.RuntimeException: Could not instantiate generated class WatermarkGenerator$0at org.apache.flink.table.runtime.generated.GeneratedClass.newInstance(GeneratedClass.java:74)at org.apache.flink.table.runt…

低功耗、5Mbps、RS-422 接口電路MS2583/MS2583M

MS2583/MS2583M 是一款低功耗、 5Mbps 、高 ESD 能力的 RS422 通訊接口電路。 在接收狀態下&#xff0c;其功耗僅為 0.3mA 左右。 A/B 端 ESD 耐壓可達 15kV &#xff0c;且無自激現象。當輸出短路發生大電 流導致電路溫度過高時&#xff0c;開啟內部過溫保護電路&…

go 使用 make 初始化 slice 切片使用注意

go 使用 make 初始化 slice 切片 時指定長度和不指定長度的情況 指定長度 package mainimport "fmt"func main() {s1 : make([]int, 5)data : []int{1, 2, 3}for _, v : range data {s1 append(s1, v)}fmt.Println(s1) }// 以上代碼會輸出 // [0 0 0 0 0 1 2 3] //…

vue中的路由緩存和解決方案

路由緩存的原因 解決方法 推薦方案二&#xff0c;使用鉤子函數beforeRouteUpdate&#xff0c;每次路由更新前執行

手寫spring筆記

手寫spring筆記 《Spring 手擼專欄》筆記 IoC部分 Bean初始化和屬性注入 Bean的信息封裝在BeanDefinition中 /*** 用于記錄Bean的相關信息*/ public class BeanDefinition {/*** Bean對象的類型*/private Class beanClass;/*** Bean對象中的屬性信息*/private PropertyVal…

MFC第三十天 通過CToolBar類開發文字工具欄和工具箱、GDI+邊框填充以及基本圖形的繪制方法、圖形繪制過程的反色線模型和實色模型

文章目錄 CControlBar通過CToolBar類開發文字工具欄和工具箱CMainFrame.hCAppCMainFrm.cppCMainView.hCMainView.cppCEllipse.hCEllipse.cppCLine.hCLine.cppCRRect .hCRRect .cpp CControlBar class AFX_NOVTABLE CControlBar : public CWnd{DECLARE_DYNAMIC(CControlBar)pro…

OC調用Swift編寫的framework

一、前言 隨著swift趨向穩定&#xff0c;越來越多的公司都開始用swift來編寫蘋果相關的業務了&#xff0c;關于swift的利弊這里就不多說了。這里詳細介紹OC調用swift編寫的framework庫的步驟 二、制作framework 1、新建項目&#xff0c;選擇framework 2、填寫framework的名稱…

AutoHotkey:定時刪除目錄下指定分鐘以前的文件,帶UI界面

刪除指定目錄下&#xff0c;所有在某個指定分鐘以前的文件&#xff0c;可以用來清理經常生成很多文件的目錄&#xff0c;但又需要保留最新的一部分文件 支持拖放目錄到界面 能夠記憶設置&#xff0c;下次啟動后不用重新設置&#xff0c;可以直接開始 應用場景比如&#xff1a…

WinForm內嵌Unity3D

Unity3D可以C#腳本進行開&#xff0c;使用vstu2013.msi插件&#xff0c;可以實現在VS2013中的調試。在開發完成后&#xff0c;由于項目需要&#xff0c;需要將Unity3D嵌入到WinForm中。WinForm中的UnityWebPlayer Control可以載入Unity3D。先看效果圖。 一、為了能夠動態設置ax…

【boost網絡庫從青銅到王者】第五篇:asio網絡編程中的同步讀寫的客戶端和服務器示例

文章目錄 1、簡介2、客戶端設計3、服務器設計3.1、session函數3.2、StartListen函數3、總體設計 4、效果測試5、遇到的問題5.1、服務器遇到的問題5.1.1、不用顯示調用bind綁定和listen監聽函數5.1.2、出現 Error occured!Error code : 10009 .Message: 提供的文件句柄無效。 [s…

Failed to execute goal org.apache.maven.plugins

原因&#xff1a; 這個文件D:\java\maven\com\ruoyi\pg-student\maven-metadata-local.xml出了問題 解決&#xff1a; 最簡單的直接刪除D:\java\maven\com\ruoyi\pg-student\maven-metadata-local.xml重新打包 或者把D:\java\maven\com\ruoyi\pg-student這個目錄下所有文件…

性能測試場景設計

性能測試場景設計&#xff0c;是性能測試中的重要概念&#xff0c;性能測試場景設計&#xff0c;目的是要描述如何執行性能測試。 通常來講&#xff0c;性能測試場景設計主要會涉及以下部分&#xff1a; 并發用戶數是多少&#xff1f; 測試剛開始時&#xff0c;以什么樣的速率…

Spring WebFlux 的詳細介紹

Spring WebFlux 是基于響應式編程的框架&#xff0c;用于構建異步、非阻塞的 Web 應用程序。它是Spring框架的一部分&#xff0c;專注于支持響應式編程范式&#xff0c;使應用程序能夠高效地處理大量的并發請求和事件。 以下是關于 Spring WebFlux 的詳細介紹&#xff1a; 1. *…

go入門實踐五-實現一個https服務

文章目錄 前言生成證書申請免費的證書使用Go語言生成自簽CA證書 https的客戶端和服務端服務端代碼客戶端代碼 tls的客戶端和服務端服務端客戶端 前言 在公網中&#xff0c;我想加密傳輸的數據。(1)很自然&#xff0c;我想到了把數據放到http的請求中&#xff0c;然后通過tls確…

2023年京東寵物食品行業數據分析(京東大數據)

寵物食品市場需求主要來自于養寵規模&#xff0c;近年來由于我國寵物數量及養寵人群的規模均在不斷擴大&#xff0c;寵物相關產業和市場規模也在蓬勃發展&#xff0c;寵物食品市場也同樣保持正向增長。 根據鯨參謀電商數據分析平臺的相關數據顯示&#xff0c;2023年1月-7月&am…