本地MinIO儲存服務Java遠端呼叫上傳檔案

Book魚發表於2023-11-22

MinIO是一款高效能、分散式的物件儲存系統,它可以100%的執行在標準硬體上,即X86等低成本機器也能夠很好的執行MinIO。它的優點包括高效能、高可用性、易於部署和管理、支援多租戶等。

Cpolar內網穿透提供了更高的安全性和隱私保護,透過使用加密通訊通道,Cpolar技術可以確保資料傳輸的安全性,這為使用者和團隊提供了更可靠的保護,使他們能夠放心地處理和儲存敏感的工作內容。

下面介紹本地MinIO 儲存服務透過Java程式結合Cpolar內網穿透進行遠端連線,檔案上傳,如需安裝MinIO,請參考這個教程:Docker 安裝MinIO教程

1. 建立Buckets和Access Keys

開啟minio管理介面,點選buckets介面,建立一個buckets,buckets 概念翻譯過來是桶的意思,建立一個桶,把檔案放入這個桶裡面進行分組管理.

image-20231121132904680

輸入buckets名稱,點選建立

image-20231121133303436

建立好buckets後,還需要建立一個連線時候的秘鑰,開啟Access Keys介面,點選建立access key

image-20231121135509291

點選建立後,會生成access key 和secret key ,繼續點選create建立

image-20231121140142373

 

然後可以看到提示這兩個需要記住,連線的時候需要用到(可以複製出來),然後關閉視窗即可,建立完成這兩個後,接下來安裝cpolar工具,透過cpolar生成的公網地址,我們很容易實現遠端連線

image-20231121140203888

 

2. Linux 安裝Cpolar

上面建立連線需要的引數後,下面我們在Linux安裝cpolar內網穿透工具,透過cpolar 轉發本地埠對映的公網地址,我們可以很容易實現遠端訪問,而無需自己註冊域名購買雲伺服器.下面是安裝cpolar步驟

cpolar官網地址: https://i.cpolar.com/m/56Ju

  • 使用一鍵指令碼安裝命令

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

 

  • 向系統新增服務

sudo systemctl enable cpolar

 

  • 啟動cpolar服務

sudo systemctl start cpolar

cpolar安裝成功後,在外部瀏覽器上訪問Linux 的9200埠即:【http://區域網ip:9200】,使用cpolar賬號登入,登入後即可看到cpolar web 配置介面,結下來在web 管理介面配置即可

image-20230831171159175

 

3. 建立連線MinIO服務公網地址

登入cpolar web UI管理介面後,點選左側儀表盤的隧道管理——建立隧道:

  • 隧道名稱:可自定義,注意不要與已有的隧道名稱重複

  • 協議:tcp

  • 本地地址:9000 (本地預設埠)

  • 域名型別:臨時隨機TCP埠

  • 地區:選擇China VIP

點選建立

image-20231121150737537

然後開啟左側線上隧道列表,檢視剛剛建立隧道後生成的tcp地址,這個地址就是公網連線地址,我們可以在任意程式上使用該地址進行連線,下面進行遠端連線上傳檔案測試

image-20231121150838314

4. 遠端呼叫MinIO服務

根據官方demo,以Java 為例,匯入相關包,第一個是minio包,第二個是為了防止提示okhttp版本異常,所以也匯入進去

    <!--minio 物件儲存包-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.7</version>
</dependency>

<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.10.0</version>
</dependency>

然後使用Cpolar 公網地址進行連線,設定建立的公網地址和對應的埠,再設定accessKey和secretKey,指定bucket,填寫需要上傳檔案的路徑,執行,無報錯表示成功

try {
// Create a minioClient with the MinIO server playground, its access key and secret key.

MinioClient minioClient =
MinioClient.builder()
//.endpoint("192.168.206.128",9000,false)//區域網
.endpoint("1.tcp.cpolar.cn",20380,false)//Cpolar 公網地址

.credentials("DeEZ0sdWvHHaqKJHBCu0", "m49wRlhHIFio79D8bTP1l9YTgbVJX55s59wB3BUC")

.build();

// Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
// 'asiatrip'.
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("helloworld")
.object("cpolar-stable-windows-amd64-setup.zip")
.filename("E:/download/cpolar-stable-windows-amd64-setup.zip")
.build());
System.out.println("successfully uploade!!!");
} catch (Exception e) {
System.out.println("Error occurred: " + e);

}

image-20231121152850162

 

 

 

執行完成後,開啟minio管理介面,進入Object Browser,然後點選helloworld,我們建立的bucket,即可看到上傳的檔案,這樣就表示成功了,當然,這邊測試,地址是寫在內部,如生產環境,建議將地址進行外部配置,有助於方便後續修改,具體更多操作方式,可以參考官方文件

 

image-20231121153013328

 

小結

為了更好地演示,我們在前述過程中使用了Cpolar生成的隧道,其公網地址是隨機生成的。

這種隨機地址的優勢在於建立速度快,可以立即使用。然而,它的缺點是網址是隨機生成,這個地址在24小時內會發生隨機變化,更適合於臨時使用。

我一般會使用固定TCP域名,原因是我希望將地址傳送給同事或客戶時,它是一個固定、易記的公網地址,這樣更顯正式,便於流交協作。

 

5. 固定連線TCP公網地址

要注意的是,以上步驟使用的是隨機臨時tcp埠地址,所生成的公網地址為隨機臨時地址,該公網地址24小時內會隨機變化。我們接下來為其配置固定的TCP埠地址,該地址不會變化,設定後將無需每天重複修改地址。

配置固定tcp埠地址需要將cpolar升級到專業版套餐或以上。

保留一個固定tcp地址,登入cpolar官網,點選左側的預留,找到保留的tcp地址,我們來為我的世界保留一個固定tcp地址:

  • 地區:選擇China

  • 描述:即備註,可自定義

點選保留

image-20231121153818870

地址保留成功後,系統會生成相應的固定公網地址,將其複製下來

image-20231121153849228

 

開啟cpolar web ui管理介面,點選左側儀表盤的隧道管理——隧道列表,找到我們上面建立的TCP隧道,點選右側的編輯

image-20231121153917758

修改隧道資訊,將保留成功的固定tcp地址配置到隧道中

  • 埠型別:修改為固定tcp埠

  • 預留的tcp地址:填寫官網保留成功的地址,

點選更新

image-20231121153943568

隧道更新成功後,點選左側儀表盤的狀態——線上隧道列表,可以看到公網地址已經更新成為了固定TCP地址。

image-20231121154007482

 

6. 固定地址連線測試

固定好了地址後,程式中修改成我們固定的TCP地址進行連線,當然,這邊測試,地址是寫在內部,如生產環境,建議將地址進行外部配置,有助於方便後續修改

image-20231121154606714

執行後,等待上傳完成,然後再次開啟我們管理介面,可以看到檔案上傳成功,這樣一個固定公網地址就設定好了.

 
image-20231121154652442

相關文章