Cloud Pribadi untuk Internet of Things



Salam, Habr!

Kami, tim arsitek TI dari IBM, yang bergerak dalam penciptaan dan pemasaran solusi industri untuk berbagai industri. Di waktu senggang, kami meneliti teknologi baru, bereksperimen, dan mencoba praktik terbaik.

Dalam beberapa tahun terakhir, tema Internet of Things telah sangat populer. Pelanggan kami bertanya tentang solusi kotak universal dan platform yang dapat ditemukan secara lokal di Pusat Data mereka. Yang paling penting, diharapkan bahwa berdasarkan "kotak" seperti itu, semua layanan dan aplikasi baru harus dikembangkan dan diluncurkan dengan sangat cepat, atau lebih tepatnya secara instan atau "kemarin."

Kami bertanya pada diri sendiri: "Bagaimana jika kita mengumpulkan sesuatu yang serupa pada teknologi terbuka dan publik?"

Kami telah berbicara dan menunjukkan banyak hal tentang penggunaan wadah Docker dan alat manajemen mereka berdasarkan Kubernetes . Namun, sejauh ini tidak mungkin untuk melihat bagaimana semua teknologi canggih ini dapat digunakan pada skala industri untuk tugas-tugas bisnis, khususnya di bawah Internet of Things. Jadi mari kita isi celah ini. Konsep layanan mikro, serta pendekatan modis untuk pengembangan (DevOps), integrasi dan penyebaran aplikasi (CI / CD) akan dianggap sebagai tugas yang sedikit berbeda dan disisihkan untuk nanti.

Dalam artikel ini kami ingin berbicara tentang persiapan dan pemasangan salah satu komponen utama - IBM Cloud Private (pada kenyataannya, perakitan industri Docker / Kubernetes dan sedikit lagi), yang dapat bertindak sebagai inti infrastruktur bersyarat saat membuat platform Internet of Things lokal. Tanyakan kenapa dia?

Karena kami menjanjikan teknologi terbuka dan publik (versi gratis untuk komunitas dan dukungan dari komunitas): hub.docker.com/r/ibmcom/icp-inception

Gambaran Umum IBM Cloud Private


IBM Cloud Private (ICP) adalah platform cloud pribadi untuk penyebaran dan operasi di tempat. ICP adalah lingkungan terintegrasi yang memungkinkan Anda merancang, mengembangkan, menyebarkan, dan mengelola aplikasi lokal yang dibangun dengan arsitektur wadah. Pengiriman ICP termasuk orkestra berbasis Kubernetes (K8s), toko gambar lokal, serta konsol manajemen dan alat pemantauan pendukung.

Apa itu cloud pribadi atau pribadi?


Cloud pribadi adalah model komputasi awan yang berjalan secara eksklusif untuk satu organisasi, biasanya pada wilayah dan sumber dayanya. Awan seperti itu dapat dikelola dan dikelola oleh spesialisnya sendiri dan karyawan pihak ketiga. Platform serupa dapat di-host baik di belakang firewall perusahaan dan di luarnya. Cloud pribadi memberikan manfaat cloud publik, termasuk penyebaran dan skalabilitas yang cepat, serta kemudahan penggunaan, manajemen, dan fleksibilitas. Pada saat yang sama, versi lokal memberikan kontrol yang lebih besar terhadap sistem, peningkatan produktivitas, biaya yang dapat diprediksi secara akurat, peningkatan persyaratan keamanan dan kemampuan manajemen yang fleksibel tergantung pada kebutuhan organisasi. Cloud pribadi memungkinkan Anda untuk mengonfigurasinya secara langsung untuk tugas bisnis tertentu dan persyaratan keamanan pelanggan.

Sebelum melanjutkan dengan instalasi ICP, kami akan mendefinisikan terminologi:

Master node
  • Monitor dan kontrol cluster K8s.
  • kubectl: alat baris perintah untuk mengelola cluster.
  • REST API: antarmuka untuk berinteraksi dengan node kerja.
  • etcd: adalah keystore yang persisten dan terjangkau, digunakan sebagai penyimpanan cadangan K8 untuk semua data cluster.
  • kube-scheduler: komponen ini mengawasi wadah yang baru dibuat (pod) yang tidak memiliki node yang ditetapkan, dan memilih sebuah node untuk menjalankannya.
  • Biasanya 3 atau lebih node utama diperlukan untuk operasi yang stabil dan memastikan toleransi kesalahan. Dalam kasus kami, untuk menghemat sumber daya, kami akan menginstal semua komponen ICP yang diperlukan pada satu server khusus (Single Node).

Node kerja
  • Mesin yang bekerja di K8 sebelumnya dikenal sebagai Minion. Node ini dapat berupa salah satu dari host yang menerima tugas dari node utama, dan juga mengontrol proses peluncuran kontainer di dalamnya. Bergantung pada pengaturan cluster, node yang bekerja dapat berupa mesin virtual atau server fisik.
  • Komponen-komponen berikut dapat dijalankan pada setiap node:
  • kubelet: adalah layanan utama dari simpul kerja. Ini memantau wadah yang ditugaskan ke simpulnya (baik apirusver untuk koneksi aman, atau melalui file konfigurasi lokal).
  • kube-proxy: menampilkan layanan yang didefinisikan dalam API K8 pada setiap host, mendukung aturan jaringan pada host dan koneksi penerusan.
  • buruh pelabuhan: peluncuran kontainer dan lingkungan manajemen.
  • supervisord: Ini adalah proses pemantauan ringan dan sistem kontrol yang dapat Anda gunakan untuk menjaga kubelet dan docker tetap berjalan.
  • fluentd: Ini adalah layanan yang membantu memastikan logging tingkat cluster.

Wadah
  • Aplikasi yang berjalan di lingkungan yang terisolasi.
  • Himpunan proses yang dapat dieksekusi dan gambar yang diluncurkan dari program.

Kepompong (polong)
  • Pod adalah sekelompok satu atau beberapa kontainer Docker, dengan penyimpanan / jaringan umum dan spesifikasi cara menjalankan kontainer pada simpul kerja.
  • Setiap Pod memiliki IP sendiri.
  • Pod membagikan ruang nama PID, jaringan, dan nama host.

Pengontrol replikasi
  • Memberikan aksesibilitas dan skalabilitas.
  • Bertanggung jawab untuk mengontrol jumlah Pod yang digunakan.
  • Menggunakan template yang menjelaskan apa yang seharusnya berisi setiap Pod.

Label
  • Metadata ditugaskan untuk sumber daya K8, misalnya: wadah, layanan.
  • Pasangan nilai kunci dilampirkan ke objek untuk identifikasi.
  • Parameter ini sangat penting karena didasarkan pada permintaan cluster untuk sumber daya dengan label tertentu.

Layanan
  • Kumpulan kontainer yang terpapar sebagai titik akhir.
  • Informasi tentang status cluster K8s dan pengaturan jaringan, yang berlaku untuk semua node yang bekerja.
  • Dengan konfigurasi yang benar, pod yang dibuat oleh pengontrol replikasi akan secara otomatis terdaftar sebagai layanan yang sesuai.

Informasi Rahasia (rahasia)
  • Informasi rahasia untuk dibaca atau digunakan oleh wadah.
  • Volume khusus dari disk drive dipasang secara otomatis sehingga wadah dapat membaca konten.
  • Setiap entri memiliki jalurnya sendiri.

Arsitektur


Di bawah ini adalah arsitektur ICP tingkat tinggi yang mencantumkan komponen utama berdasarkan simpul utama, kerja dan proxy. Perlu dicatat bahwa dalam artikel ini penekanan utama ditempatkan pada kombinasi kontainer Docker dan lingkungan manajemen Kubernetes. Komponen open source ini adalah kunci dan mendasar bagi platform ICP. Namun demikian, untuk sepenuhnya bekerja dengan ICP, Anda juga perlu pengetahuan tentang Helm, manajer manajemen paket perangkat lunak. K8 digunakan untuk menyebarkan dan meng-host contoh aplikasi yang dibangun ke dalam skema Helm, yang pada gilirannya merujuk pada gambar Docker. Skema helm berisi informasi tentang detail aplikasi Anda, dan gambar Docker berisi semua paket perangkat lunak yang diperlukan untuk menjalankan aplikasi Anda.



Untuk pengantar mendetail tentang arsitektur dan komponen platform ICP, Anda dapat menggunakan tautan dokumentasi di Pusat Pengetahuan IBM .

Persiapan


Untuk menyelesaikan instalasi ICP dengan nyaman dalam 20-30 menit, diperlukan sumber daya perangkat keras minimum dan akses Internet:
• Satu host (fisik atau virtual)
• CPU = 8 core (atau core virtual)
• RAM = 10 GB (mungkin dibutuhkan hingga 14 GB)
• Disk = 40 GB (pada SSD lebih cepat)
Catatan: jika Anda memiliki waktu luang lebih sedikit dan sumber daya perangkat keras lebih sedikit, maka di suatu tempat dalam 40-60 menit Anda dapat menginstal ICP pada 1 virtual core i5 dan 10 GB RAM.

Instalasi


Unduh Ubuntu


Unduh distribusi Server Ubuntu versi 16.04.05 . Lakukan instalasi OS standar pada mesin virtual atau fisik dengan karakteristik di atas.

Mendapatkan Alamat IP


Setelah menyelesaikan proses instalasi OS, di baris perintah, cari tahu alamat IP mesin virtual Anda menggunakan perintah berikut:

ifconfig 

Anda perlu menulis / mengingat alamat IP Ethernet (inet addr), serta Bcast dan Mask. Parameter ini akan ditampilkan setelah menjalankan perintah yang sesuai:

Gambar 1. Contoh perintah ifconfig

Koneksi SSH


Jika Anda menggunakan fungsi "Instal Mudah" ketika mengatur mesin virtual, maka setelah instalasi penuh Ubuntu Server Anda perlu menginstal server OpenSSH. Anda dapat melakukan ini dengan perintah berikut:

 apt install openssh-server sudo systemctl enable sshd 

Setelah menjalankan perintah yang sesuai, Anda akan dapat terhubung ke mesin virtual menggunakan SSH. Tergantung pada OS, Anda dapat menggunakan metode koneksi yang berbeda. Untuk Windows, Anda dapat menggunakan alat Putty populer, untuk MacOS, Anda dapat menggunakan perintah ssh di terminal.


Gambar 2. Contoh koneksi via Putty untuk Windows

Langkah selanjutnya adalah mengatur kata sandi untuk pengguna super (root):

 sudo -i passwd 


Gambar 3. Mengatur kata sandi baru untuk pengguna root

Pembaruan Antarmuka Jaringan


Setelah kami mengkonfigurasi kemampuan untuk terhubung melalui SSH dan memperbarui kata sandi pengguna super, kami perlu mengkonfigurasi antarmuka jaringan untuk menentukan parameter jaringan statis. Ini dilakukan dengan perintah berikut:

 nano /etc/network/interfaces 

Kami memperbarui pengaturan antarmuka jaringan (antarmuka jaringan primer) berdasarkan informasi yang diperoleh selama perintah ifconfig, contoh kami terlihat seperti ini:

 auto ens33 iface ens33 inet static address 192.168.175.7 netmask 255.255.255.0 network 192.168.175.0 broadcast 192.168.175.255 gateway 192.168.175.2 dns-nameservers 192.168.175.2 8.8.8.8 

Catatan: Penting untuk menentukan server DNS dengan benar, karena akses Internet diperlukan untuk pemasangan komponen ICP berikutnya.


Gambar 4. Konfigurasi antarmuka jaringan

Simpan file yang diperbarui menggunakan langkah-langkah berikut: Ctrl + X, Ya, Enter.

Untuk menyederhanakan masuk ke mesin virtual dengan hak superuser (root), Anda perlu membuat perubahan pada konfigurasi layanan SSH. Untuk melakukan ini, jalankan perintah berikut:

 nano /etc/ssh/sshd_config 

Selanjutnya, cari jalur izin akses dan edit sesuai itu:

 PermitRootLogin yes 


Gambar 5. Memperbarui konfigurasi SSH

Simpan file seperti pada langkah sebelumnya: Ctrl + X, Ya, Enter.

Setelah melakukan semua perubahan, untuk menerapkan parameter baru, masuk akal untuk memulai ulang sepenuhnya mesin virtual atau memulai kembali layanan yang sesuai (jaringan dan ssh), misalnya, dengan perintah berikut:

 shutdown -r 0 

atau

 service <service_name> restart 

Setelah menghidupkan ulang mesin, Anda harus masuk kembali melalui SSH.

Pembaruan Komponen


Perbarui Server Ubuntu dengan perintah berikut (perintah harus dijalankan sebagai root):

 apt update 

Catatan: jika kesalahan terjadi selama pembaruan: "Tempat penyimpanan ': // Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Rilis amd64 (20180731) xenial Release' tidak memiliki file Rilis.". Anda harus menjalankan perintah berikut:

 sudo nano /etc/apt/sources.list 

Dan berikan komentar:

 deb cdrom:[Ubuntu-Server 16.04.5 LTS … 


Gambar 6. Koreksi kemungkinan kesalahan

Selanjutnya, simpan file, seperti yang dilakukan sebelumnya: Ctrl + X, Ya, Enter

Setelah memperbaiki kesalahan yang mungkin terjadi, jalankan perintah pembaruan lagi dan sebagai hasilnya Anda akan melihat sesuatu seperti ini:


Gambar 7. Pembaruan Ubuntu

Instal IBM Cloud Private


Sebelum Anda menginstal ICP, Anda perlu mengedit file host:

 nano /etc/hosts 

Ganti string 127.0.1.1 ubuntu dengan alamat IP Anda dan nama host yang sesuai.

Pastikan nama host dan alias di baris dipisahkan oleh tab atau spasi:

Gambar 8. Mengubah file hosts

Simpan file: Ctrl + X, Ya, Enter

2 perintah berikut akan memungkinkan Anda untuk memperbarui sistem dan memasang modul tambahan.

 apt update apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq 

Periksa terminal untuk kesalahan:


Gambar 9. Memasang komponen tambahan

Tambah memori virtual maksimum dengan perintah:

 sysctl -w vm.max_map_count=262144 

K8 tidak akan mulai dengan swap diaktifkan. Anda dapat menonaktifkannya dengan perintah:

 swapoff –a 

Catatan: dua perintah sebelumnya akan bekerja di sesi saat ini. Ketika Anda reboot, parameter ini akan hilang dan Anda harus mendaftarkannya lagi.

Aplikasi parameter ini saat memuat OS dapat diaktifkan dengan perintah berikut:

 sed -i '/ swap / s/^/#/' /etc/fstab echo "vm.max_map_count=262144" >> /etc/sysctl.conf 

Menambahkan Kunci GPG


Kami menggunakan perintah berikut:

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 

Menambahkan repositori untuk menginstal Docker


Untuk menyelesaikan instalasi repositori, Anda harus menjalankan 2 perintah berikut:

 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update 

Instal Docker


Gunakan perintah berikut untuk menginstal Docker (Docker versi 17.12.1 adalah versi maksimum yang didukung untuk IBM Cloud Private 2.1.0.3):

 apt-get install docker-ce=17.12.1~ce-0~ubuntu 


Gambar 10. Proses instalasi Docker

Anda dapat memverifikasi fungsionalitas Docker dengan perintah berikut:

 docker version 


Gambar 11. Memeriksa Docker

Unduh IBM Cloud Private


Untuk mengunduh gambar ICP-ce (Edisi Komunitas) dari sumber dockerHub, Anda perlu menggunakan toolkit Docker. Anda dapat melakukan ini dengan perintah berikut:

 docker pull ibmcom/icp-inception:2.1.0.3 


Gambar 12. Unduh ICP

IBM mengemas semua komponen penting yang diperlukan untuk instalasi ke dalam satu paket (perhatikan bahwa Anda dapat mengubah versi ke versi yang lebih baru jika perlu). Perintah tarikan akan mengunggah gambar ke sistem file lokal (gambar akan diluncurkan untuk menginstal ICP).

Buat direktori dan navigasikan ke sana:

 mkdir /opt/icp cd /opt/icp 

Salin paket ICP ke direktori ini:

 docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data 

Catatan: perintah Docker toolkit ini mengeksekusi perintah Linux copy (cp) dari direktori yang ditentukan (opsi -v). Direktori cluster akan dibuat di / opt / icp dengan semua file yang diperlukan.

Konfigurasikan kunci SSH


Buat kunci ssh baru di direktori / opt / icp / cluster:

 ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys systemctl restart sshd cp ~/.ssh/id_rsa ./cluster/ssh_key 

Pastikan kunci dibuat dan terletak di folder / opt / icp / cluster:

 ls /opt/icp/cluster 


Gambar 13. Isi folder cluster

Pengaturan ICP


Tambahkan alamat IP dari setiap node di cluster ke file / opt / icp / cluster / hosts (dalam kasus kami, kami menggunakan alamat IP yang sama untuk setiap komponen yang kami tentukan di / etc / hosts). Kami melakukan ini dengan perintah berikut:

 nano /opt/icp/cluster/hosts 


Gambar 14. Isi file hosts

Simpan file: Ctrl + X, Ya, Enter

Informasi terperinci tentang opsi instalasi dapat ditemukan di file konfigurasi:

 more /opt/icp/cluster/config.yaml 

Kami tidak menyarankan mengubah pengaturan instalasi default.
Catatan: 2 file instalasi paling penting adalah host dan config.yaml, yang menjelaskan opsi instalasi ICP. Dalam konfigurasi multi-pekerja, Anda harus menentukan daftar alamat IP di bagian pekerja. Saat memasang versi ICP saat ini dalam mode Node Tunggal, alamat IP dalam file host hanya berubah.

Instalasi ICP


Pergi ke direktori cluster dan jalankan instalasi:

 cd /opt/icp/cluster docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install 

Bergantung pada sumber daya yang tersedia, instalasi dapat berlangsung dari 20 hingga 60 menit. Jika terjadi kesalahan (pesan merah), buat perubahan yang sesuai pada file konfigurasi. Kadang-kadang instalasi mungkin sedikit melambat karena upaya untuk menyambung kembali ke komponen yang belum dimulai (misalnya, ketika memulai Cloudant atau IAM).

Instalasi akan terlihat seperti ini:

Gambar 15. Hasil Instalasi ICP

Jika terjadi kesalahan, menghapus ICP mungkin diperlukan:

 docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall 

Sebelum melanjutkan ke langkah berikutnya, tunggu sekitar 5 menit untuk semua komponen ICP untuk memulai dengan sukses.

Ikuti tautan yang disediakan setelah instalasi selesai, masukkan konsol ICP (admin / admin):

 https://<ip_address>:8443 


Gambar 16. Halaman login panel kontrol

Halaman Selamat Datang ICP:

Gambar 17. Antarmuka web panel kontrol

Di kanan atas, pilih menu Katalog, daftar aplikasi yang tersedia ditampilkan:

Gambar 18. Katalog komponen

Direktori ini berisi daftar aplikasi dan perangkat lunak, deskripsi yang dapat Anda pelajari sesuka hati, tetapi sejauh ini jangan terburu-buru untuk menggunakannya.
Kami belum belajar bagaimana menangani ICP yang baru diinstal dengan benar (tidak hanya melalui antarmuka Web, tetapi juga konsol dalam bentuk CLI - Command Line Interface), sambungkan penyimpanan persisten dan buat pengaturan kecil.

Kesimpulannya


Untuk meringkas.

Kami berhasil menyebarkan edisi komunitas IBM Cloud Private (versi 2.1.0.3) pada satu host di mesin virtual yang menjalankan Ubuntu Server OS 04/16/05. Saat ini, kami telah memverifikasi instalasi pada VMware dan Hyper-V hypervisors, itu pasti berfungsi pada XenServer dan seharusnya tidak ada kesulitan untuk VirtualBox dan KVM.

Siapa yang benar-benar ingin terjun lebih jauh ke dalam studi ICP, yaitu, pilihan yang sangat baik dari pekerjaan laboratorium rekan kami di sini: github.com/phthom/IBMCloudPrivate

Dari langkah-langkah yang akan datang - setelah instalasi baru, kita hanya perlu mengkonfigurasi sedikit ICP dan mulai mengisinya dengan sesuatu yang berguna dan dekat dengan tugas-tugas praktis.

Jika komunitas Habr secara positif mendukung inisiatif ini, maka seiring dengan kemajuan penelitian dan percobaan kami, kami akan mengisi inti platform dengan komponen yang diperlukan untuk pengumpulan telemetri, penyimpanan data, pemrosesan, analisis, peramalan, pembentukan antarmuka program eksternal dan pembuatan aplikasi pengguna. Dengan demikian, mengembangkan serangkaian artikel tersebut.

Menunggu tanggapan dan saran Anda!

Selain itu, orang-orang yang sepaham dari AIXportal.ru kami menyiapkan klip video yang luar biasa untuk menginstal IBM Cloud Private di saluran Youtube mereka, seseorang akan lebih nyaman seperti ini: youtu.be/eQwOOTzjM24

Tautan dan materi yang bermanfaat


Halaman produk dalam bahasa Rusia
• Siapa yang ingin berlatih bahasa Inggris, buku - " ICP for Dummies " 2018. (40 halaman)
Kertas putih untuk ICP 2.1.0.3 di Pusat Pengetahuan IBM
• Buka komunitas ICP di IBM developerWorks
resep ICP untuk pengembang

Source: https://habr.com/ru/post/id426135/


All Articles