Chuyện của sys

DevOps Blog

Những thứ cần làm để trở thành 1 Linux system admin thành công? February 10, 2021

Nghe cái tựa đề là thấy có chút vấn đề rồi nhỉ?, tính ra thì khoảng hơn 1 năm nay mình chưa viết 1 bài nào mới cả, nhân dịp một đêm mất ngủ cùng với 1 bài viết được chia sẻ trên đây , mình xin phép được tóm tắt lại một số ý chính của bài viết cũng như vài suy nghĩ của mình về nghề nghiệp chính của mình hiện tại, 1 Linux System Administrator.
Như các bạn đã biết thì System Admin nói chung, Linux System Administrator  nói riêng thì là 1 vị trí luôn được các công ty săn đón nhiều nhất và mức độ cạnh tranh càng lúc càng cao, mức độ đãi ngộ cũng cực kỳ lớn, các topic tuyển dụng các vị trí này luôn hot và ngày càng có nhiều trung tâm cung cấp những khóa học nhanh nhất để trở thành 1 System Admin (à, tính ra chủ yếu người ta tuyển Devops, nhưng trong topic này mình không nói thêm về từ khóa này, #devops is bullshit) . Nếu bạn là 1 người có kinh nghiệm sử dụng Linux, đã và đang làm những công việc có liên quan, và muốn trở thành 1 Linux System Admin thành công, thì những điều dưới đây có thể sẽ giúp ích cho bạn.

1. Cài đặt môi trường

Đã là 1 Linux System Admin thì việc thành thạo việc cài đặt hệ điều hành cho máy tính cá nhân hay hệ thống máy chủ là 1 điều bắt buộc, tùy theo sở thích cá nhân mà mỗi người thường chọn cho mình 1 bản phân phối yêu thích, những người thích làm mọi thứ thường hay chọn Arch để khổ d*m, hoặc những bạn thích màu mè có thể chọn Mint, như cá nhân mình thì vẫn sử dụng Ubuntu cho laptop cá nhân ( do nhiều lần cài thử những thứ khác nhưng không được).
Và tất nhiên là sử dụng hệ điều hành hay môi trường nào bạn đều phải làm những thứ cần thiết như sau cài đặt, chia phân vùng, chia swap, mã hóa disk hay đặt mật khẩu BIOS, cấu hình firewall hay làm mọi thứ mình thích miễn sao có thể thoải mái sử dụng cho mục đích cá nhân và công việc.

Note: Hầu như mọi người đều quên mã hóa ổ cứng của họ.

2 + 3: Quản trị user và group, cài đặt và cấu hình các gói cần thiết

Đây thực sự là công việc thường xuyên của 1 Linux user bình thường, không cần nhất thiết là phải 1 Linux System Admin, tuy nhiên một số lưu ý về chính sách tạo mật khẩu, độ khó hay thời gian hết hạn, quyền hạn của user cũng như việc sử dụng các trình cài đặt cho mỗi bản phân phối Linux khác nhau.

Note: Có thể bạn chưa biết, chữ Y trong YUM là con chó màu vàng? (Yellowdog)

4 + 5: Linux Shell và Filesystem

Shell là cái vỏ sò hay dầu nhớt nhỉ? Dù nó là gì đi nữa thì cứ làm Linux Admin thì chính xác là phải thành thục nó, để tương tác với hệ thống thì bạn bắt buộc phải sử dụng Shell. Bash/Sh/Zsh/Fish là 1 số shell thường được các chuyên gia sử dụng, câu lệnh hay các đoạn script đều rất hữu ích cho công việc của bạn, cộng với những hiểu biết về hệ thống filesystem của Linux khiến bạn trở nên thành thục và hiểu sâu những thao tác mà bạn đang muốn làm với hệ thống của mình.

Large selection of isolated seashells and a starfish. Montage.

6 + 7: Cấu hình và quản trị network cùng với quản lý dữ liệu lưu trữ

Kiến thức về network cơ bản cần phải nắm rõ như TCP/IP, routing, switch (ý nói kiến thức CCNA?), một điều làm nên 1 System Admin giỏi chính là nắm rõ và hiểu sâu những điều cơ bản này tuy nhiên thì những khóa học này đã hơi lỗi thời, và đã qua trend đào tạo thì phải? 🙂
Data là 1 thứ gì đó cực kỳ quan trọng, trong bài viết sau mình sẽ nói về chủ đề này

8: Công nghệ ảo hóa

Đây thực sự là 1 lĩnh vực cực kỳ rộng và sâu, cần phải đổ rất nhiều công sức để hiểu được đâu là hypervisor đâu là containerized, đâu là VPS đâu là Cloud Server? ^^

9+10: Quản trị Backup và Disater Recovery

Việc lưu trữ dữ liệu cực kỳ quan trọng cũng như những bản backup của nó, chúng ta không cần phải nói quá nhiều về sự quan trọng của nó vì không phải ngẫu nhiên mà các giải pháp được ưu tiên nhất của các doanh nghiệp chính là việc xây dựng datacenter dự phòng chỉ để backup và phục hồi sau thảm họa.
Có rất nhiều bài báo viết về vấn đề này, ví dụ như code của bạn sẽ được bảo vệ hoàn toàn sau khi trái đất bị phá hủy và sẽ được khôi phục chạy lại ngon lành trên sao hỏa, hay việc google xây dựng hệ thống datacenter ở đâu đó Nam Cực hay Bắc Cực gì đó.
 
Trên đây là 10 điều trong 20 điều mà bài viết đề cập, hầu hết đây là những điều cơ bản những thường là cực kỳ quan trọng, nếu cơ bản nắm vững và ngon lành cành đào hết 10 điều này thì không cần đọc tiếp bài viết tiếp theo thì bạn đã có cơ hội để trở thành 1 Linux System Admin thành công rồi.
Tuy nhiên, những điều hay còn ở phía trước, chúc các bạn có một ngày làm việc cuối cùng của năm vui vẻ và đầy may mắn.

No Comments on Những thứ cần làm để trở thành 1 Linux system admin thành công?

Somethings about Lizardfs January 29, 2020

Hi there, I’m back from the Tet holiday (Lunar New year in Asia) and nice to write something about Lizardfs, which the best distributed software storage at this time.
My name is Nhan Pham T., live in Ho Chi Minh City, Vietnam, where is UTC + 07:00. I’m a dad, a blogger and a dreamer 🙂
I speak Vietnamese and English, and use Python, Bash, and some PHP for daily task or small pet projects.
I started my professional working as a Python developer and spend more than 6 years for using Linux and opensource software. At fact, I haven’t a personal laptop or macbook. I started research for a distributed file system/ storage when I tried to learn Docker in early 2013. I builded a small lab with Ceph and use it for container. After years, I used Lizardfs for our projects in the my company, which is a biggest Vietnamese technology company, founded in 2004, specializing in digital content and online entertainment, social networking, and e-commerce.
LizardFS was chosen as our solution as it’s flexible, efficient and easy to setup. We have been using it since 04/2019 as the distributed file system within our product. Before that, we used physical disk for all storage with RAID 5, 6 for file and objects, We tried GlusterFS, Ceph and some solution from HP or Dell in lab or development.
Lizardfs have URAFT for High Metadata Availability, something like MooseFS Pro, but it’s opensource.
Lizardfs is easy to learn but it’s document is not up-to-date, and alot for issues of this project in github are open and seem to not close or fix.
Distributed file system is really a nightmare with the system engineer like me. Alot of issue and some incident.
I think multithreading is must be implement it next relase (https://github.com/lizardfs/lizardfs/issues/476) and a webmin to administration (https://github.com/lizardfs/lizardfs/issues/546)
and reduce memory usage of master server. In my case, I have 256GB RAM for the cluster but I don’t think it enough to lead many chunkservers to exabyte :d
==)) Stupid english but this is first time I write an article in 2020, have fun!!!

No Comments on Somethings about Lizardfs
Categories: Linh tinh

Chuyện của sys 2019 có cái gì? October 17, 2019

Hơn 1 năm rồi không có 1 bài viết hay cái gì mới, thậm chí còn down lên down xuống do vụ hosting? Đôi khi cũng không biết duy trì blog để làm gì? cho bản thân hay cho ai khác? vì cộng đồng hay không?
Tự dặn mình sẽ viết những bài có tính chia sẻ hơn về những thứ đã và đang trải qua, về tâm sinh lý tuổi gần 30, công việc sự nghiệp sức khỏe gia đình.
Đoán xem.

No Comments on Chuyện của sys 2019 có cái gì?
Categories: Linh tinh

Tâm sự của một System Engineer December 18, 2018

Một ngày mới lại bắt đầu tỉnh dậy như bao buổi sáng khác , vệ sinh cá nhân ăn mặc chỉnh chu và bắt đầu một ngày mới tràn đầy năng lượng . Tôi chưa bao giờ nghĩ mình sẽ chán việc một công việc như thế này bởi nhiều lý do sau và có lẽ 5 năm 10 năm thậm chí 15 năm sau tôi vẫn yêu nó như cái ngày chân ướt chân ráo bước vào nghề . Sau đây là ý kiến của mình về những tính cách mà một người SE nên có .
1) Tính cẩn thận
Nghề SE cho này không dành cho những kẻ bất cẩn và cẩu thả , nó đã tôi luyện cho tôi trở thành một người cẩn thận dù là lúc 3 4h sáng hay chậm chí trong cơn say vài chục lon bia(này hơi chém xíu bởi trong người cũng 5 7 lon rồi hí hí ) . Các bạn biết đấy chỉ với một thao tác không cẩn thận cũng dẫn đến một kết quả không ngờ tới câu nói “Sai một li đi một dặm ” chẳng bao giờ sai cả nhưng đối với nghề này “Sai một ly bạn chỉ cần đi gặp sếp thôi” Mình hơi serious một tý nhưng đấy là tính chất công việc của SE chúng mình đang làm , bởi người ta trả tiền cho bạn để đảm bảo rằng hệ thống họ up to 99% vì vậy “phía sau bàn phím là một Hero hay là một loser ” tất cả là do hành vi của bạn .
2) Tính trách nhiệm

Mình có một câu nói và như khẩu quyết bước vào nghề đó là ” Dù đi đâu làm gì hãy để chiếc laptop , điện thoại và internet là cái bóng thứ hai của bạn ” sản phẩm hệ thống của bạn có thể lăn ra chết bất cứ lúc nào và đó là lúc người trả tiền cho bạn cần bạn nhất vì vậy đừng để họ thất vọng khi gọi cho bạn và nhận được câu trả lời “Em đang ở ABC XYZ anh đợi em 1 vài tiếng nữa nha anh ” hay chẳng hạn ” Em đang ABC XYZ ” hoặc thậm chí là tiếng quen thuộc ” Thuê bao…. ” Thật là thảm họa , Sếp bạn có thể đợi bạn , nhưng người dùng của sản phẩm bạn họ chẳng có kiên nhẫn để làm điều đó . Vì vậy khi bước vào nghề hãy là một người có trách nhiệm với hệ thống mình đảm nhiệm .
3) Tính trung thực và biết nhận lỗi
Trung thực là đức tính mà ở bất cứ ngành nghề nào cũng cần thiết bởi chẳng một cộng sự nào muốn làm việc với một người lúc nào cũng lý do lý trấu biện minh cho hành vi sai phạm của mình dù đó là một lỗi nhỏ trong công việc , Nghề SE đã tôi luyện cho tôi là một người biết nhận lỗi biết mình sai ở đâu , các bạn biết đấy kiến thức là vô hạn vì vậy chẳng có gì xấu hổ khi làm sai một cái gì đó nhưng đồng nghiệp của bạn hay sếp của bạn nhảy vào support thì các bạn hãy thành thật trả lời để cùng nhau giải quyết vấn đề một cách nhanh chóng … Đừng có vòng vo ” Em không biết em mới chỉ … ” ” Em chưa làm gì cả tự nhiên ” mình đảm bảo với các bạn chẳng có một người đồng nghiệp hay người sếp nào chấp nhận việc này cả dù bất cứ ngành nghề nào trong cuộc sống này
4) Tính phản biện .
Làm SE chứ không phải làm culi , vì thế mình mong rằng các bạn đừng nên dễ dãi quá với bản thân cũng như công việc của mình mà đánh mất đi bản năng của một người SE . Làm SE hãy làm những gì thấy đúng , thấy tốt cho hệ thống chứ đừng nên để người khác nói gì nghe đó răm rắp làm theo , rồi một ngày có bugs/issues thì bạn sẽ là người gánh mọi hậu quả và trở thành một SE tồi trong mắt đồng nghiệp . Lúc đó có phản biện do anh dev A , anh dev B bảo làm như thế chứ em có biết gì đâu thì có lẽ đã quá muộn .
5) Học các làm cho mình hoàn thiện hơn :
Mặc dù khi sinh ra chẳng có ai là hoàn hảo cả nhưng mình có nghe một câu nói rất hay đó là :
Bowling có 10 chai, nếu như bạn ném đổ 9 chai, bạn sẽ đạt được 90 điểm; Nhưng nếu như mỗi lần bạn ném đổ cả 10 chai, kết quả bạn sẽ được 240 điểm. 80% phần thưởng trong cuộc sống này dành cho 20% những người xuất sắc nhất. Từ tốt đến vĩ đại là một khoảng cách dài, nếu được hãy trở nên vĩ đại
Vì vậy là một người SE hãy không ngừng học hỏi tìm tòi và trau dồi những kiến thức mới để trở nên hoàn hảo hơn trong mắt đồng nghiệp cũng như là sếp của bạn bởi trong thời đại công nghệ hiện tại nếu bạn không theo kịp nó thì bạn sẽ bị bỏ rơi mất .

Trên đây là một vài phẩm chất mà ở bất cứ ngành nghề nào cũng phải cần chú không chỉ riêng gì là SE và những thứ mình kể ở trên là những thứ mà mình đã  từng mắc phải và đã từng phải nghe những lời chỉ trích , lời khuyên từ đồng nghiệp nên hôm nay mình tâm sự cùng các bạn coi như là một kỷ niệm nhắc mình phải hoàn thiện bản thân mình tốt hơn

No Comments on Tâm sự của một System Engineer
Categories: Linh tinh

[Fix lỗi] rpmdb: Thread/process xxx failed: Thread died in Berkeley DB library September 19, 2018

Hỏi nhỏ
Bạn có biết command này để làm gì ko?

rpm -q –queryformat ‘%{VERSION}’ centos-release

Command này để lấy được version CentOS của server , thường được tìm thấy trong /etc/centos-release, ví dụ, đây là con server của mình.

cat /etc/centos-release

CentOS release 6.9 (Final)
Nhưng không may là khi chạy thì nó gặp lỗi sau:
rpmdb: Thread/process 15564/140193669781248 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 – (-30974)
error: cannot open Packages database in /var/lib/rpm
rpmdb: Thread/process 15564/140193669781248 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages database in /var/lib/rpm
package centos-release is not installed
🙁 Có vẻ như là DB của rpm có vấn đề.
Cách giải quyết
Mình thử yum clean all thử:

yum clean all

rpmdb: Thread/process 15564/140193669781248 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 – (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
Error: rpmdb open failed
Éc, rõ ràng là rpmdb ko thể mở được rồi, giờ chỉ có cách xóa đi và rebuild lại thôi.
Mình thử các command sau:

[root@monitor-srv ~]# mkdir /var/lib/rpm/backup
[root@monitor-srv ~]# cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/
[root@monitor-srv ~]# rm -f /var/lib/rpm/__db.[0-9][0-9]*
[root@monitor-srv ~]# rpm –quiet -qa
[root@monitor-srv ~]# rpm –rebuilddb
 
[root@monitor-srv ~]# yum clean all

Loaded plugins: fastestmirror, security
Cleaning repos: base centos-sclo-rh centos-sclo-sclo epel extras google-cloud-compute labs_consol_stable updates
Cleaning up Everything
Cleaning up list of fastest mirrors
Sau đó check lại:

rpm -q –queryformat ‘%{VERSION}’ centos-release

6
Ra kết quả rồi này 😀
Cảm ơn bài viết đã giúp mình xử lý vấn đề trong 1p.
 

1 Comment on [Fix lỗi] rpmdb: Thread/process xxx failed: Thread died in Berkeley DB library
Tags: ,
Categories: Linh tinh

Tôi đã pass vị trí System Engineer tại Zalo như nào ? Part 4 – Chuẩn bị CV July 23, 2018

Chào các bạn để tiếp tục theo Serial của mình về việc chuẩn bị những điều cần thiết khi đi phỏng vấn tại Zalo , thì các bạn biết rồi đấy CV là một cái cực kì quan trọng cho việc thành bại của một buổi phỏng vấn nhưng khoan bàn đến chuyện nội dung của CV đã.
Ngày xưa khi chưa có Zalo , Facebook hay là Yahoo thì các cô cậu học sinh muốn tán tỉnh ai đó sẽ phải dùng thư tình nhưng các bạn biết đấy nó sẽ có nhiều trường hợp và cách để cho đối phương đọc thư của mình :
+ Điển hình nhất là để hộc bàn tỉ lệ fail khá cao
+ Đưa trực tiếp cái này phải quen từ trước nếu không đối phương sẽ khá là ngại trong việc nhận thư và ngay cả người đưa thư cũng ngại
+ Cuối cùng là đưa cho con bạn thân , cái này tỉ lệ thành công khá là cao
Áp dụng kĩ thuật từ xưa của anh cha để lại thì việc gửi CV cũng vậy , ở Zalo cũng có 2 cách cho bạn apply thứ nhất là các bạn có thể gửi CV trực tiếp qua website tuyển dụng trực tiếp của Zalo Clickhere hoặc qua mail của HR tuyển dụng nhưng nếu bạn không phải là một người quá xuất sắc trong việc chém gió cũng như làm CV thì mình khuyên bạn nên làm theo cách 2 của mình đó là các bạn nên gửi cho những người trong công ty , những người có quen với các HR hoặc là những người trong team của bạn mà chuẩn bị vào làm thì tỉ lệ bạn pass qua vòng giữ xe là khá cao điều quan trọng hơn nữa nếu bạn phỏng vấn pass thì người giới thiệu cũng có 1 ít tiền bonus cũng như khi đi làm có người quen cũng đỡ bỡ ngỡ hơn = > đấy là quan điểm của mình thôi nhé 😉
Sau khi đã tìm hiểu và quen những người trong công ty bạn sắp apply rồi tiếp theo là việc viết CV phần này cũng quan trọng không kém bởi những thứ bạn viết ở CV sẽ là những thứ mà phần lớn bạn sẽ trao đổi trong suốt cuộc phỏng vấn vì vậy hãy cực kì cân nhắc trong việc này vậy trong CV cần ghi những gì :
+ Đầu tiên tất nhiên họ tên phải rõ ràng , ngày tháng năm sinh , số điện thoại , nơi ở thông tin cá nhân , đặc biệt hơn các bạn có thể để 1 câu introdution giới thiệu nhẹ về bản thân mục tiêu hiện tại để làm nổi bậc mình hơn ví dụ như này :
I’m a System Engineer, specialized in Linux operating system. Most of my free time is spent learning new technologies. I have a huge passion for Linux and the open source community. Things that I’m currently focus on right now are Linux, Devops tool, and AWS.
+ Tiếp theo là phần quan trọng nhất đó là kinh nghiệm làm việc tại đây nên theo mình nghĩ các bạn chỉ nên ghi 2 hoặc tối thiểu là 3 công ty các bạn đã làm nếu các bạn có 1 – 3 năm kinh nghiệm vì chẳng một nhà tuyển dụng nào muốn tuyển một ứng việc 1 năm nhảy việc đến 3 lần đâu
+ Phần quan trọng nhất vẫn là technical cái này theo quan điểm cá nhân của mình thôi nhé , khi nhà tuyển dụng đăng tin tuyển sẽ có 1 cái JD các bạn cứ dựa vào đó mà ghi nếu như những công việc đó các bạn đã làm ở những công ty cũ mình lấy ví dụ một JD mà mình đã apply vào Zalo :
Yêu cầu :
Có kinh nghiệm trong việc vận hành hệ thống server Linux, Windows (tối thiểu 1 năm) 
Có kiến thức về các dịch vụ như: haproxy, nginx, LAMP, LEMP Stack…
Có khả năng lập trình Bash Shell, Python … ( Biết echo “helloworld” là được)
Có kiến thức cơ bản về network ( TCP/IP, mạng LAN, WAN…)
Có kiến thức cơ bản về security 
Có kiến thức về các cơ sở dữ liệu: MySQL, Redis cluster, Hadoop…
Thì dựa vào JD này các bạn có thể viết những gì có liên quan đến những việc mình làm ở công ty cũ mỗi dòng như vậy các bạn có thể viết một dòng ở CV , Nếu có những thứ bạn làm mà bạn cảm thấy nổi trội và bạn nghĩ đó là thế mạnh cũng như điểm cộng cho mình thì có thể ghi vào còn không thì cứ ghi vừa đủ với JD mà nhà tuyển dụng yêu cầu là được
+ Còn một phần nữa là các skill của các bạn mình thấy 1 số mẫu có biểu thị skill với % mình cực kì không đồng tình với chuyện này bởi nó không có tác dụng lắm bởi số % mà các bạn để là so với ai ? trình độ như nào ? và % đó các bạn làm được gì , theo mình các bạn nếu ghi skill các bạn cứ đưa thẳng vào những dự án các bạn đã làm ví dụ như ở trên JD kia yêu cầu biết về Haproxy , nginx , LAMP LEMP stack chẳng hạn thì các bạn ghi vào CV các bạn đã làm 1 web hay app sử dụng haproxy nginx hay deploy với LAMP LEMP stack như vậy sẽ hay hơn rất nhiều là con số % kia .
Sau khi hoàn thành việc viết CV thì các bạn cứ gửi cho các anh chị trong ngành xem thử CV như này đã đầy đủ chưa thiếu gì không ? còn nữa CV là tiếng anh nếu cần trau chốt cho đẹp thì có thể gửi cho một số người good về ngữ pháp tiếng anh và nhờ họ chỉnh lại cho một ít để đẹp hơn . Chúc các bạn thành công ^^!

No Comments on Tôi đã pass vị trí System Engineer tại Zalo như nào ? Part 4 – Chuẩn bị CV
Categories: Linh tinh

10 cách để trở thành một ông bố TỐT HƠN July 8, 2018

Đôi khi bạn phải phân vân khi chọn lựa giữa những điều quan trọng, cái nào ưu tiên làm trước, cái nào có thể làm sau, nhưng khi tới 1 thời điểm nào đó trong cuộc đời của bạn, gia đình thực sự là điều gì rất quan trọng và “không điều gì quan trọng bằng gia đình”.

Bài viết mình vô tình thấy được sau khi google search, cảm thấy khá hay nên mình xin chia sẻ lại ở đây.

10 cách để trở thành một ông bố TỐT HƠN

  1. Trân trọng người mẹ của trẻ
    Một trong những điều tốt nhất người cha có thể làm cho con mình đó là trân trọng mẹ của con. Nếu hai người đã kết hôn, hãy giữ cho cuộc hôn nhân vững bền và hạnh phúc. Ngay cả nếu hai người không sống bên nhau, điều rất quan trọng là bạn vẫn cần trân trọng và giúp đỡ mẹ của trẻ. Khi người bố và người mẹ tôn trọng lẫn nhau và để cho trẻ thấy được điều đó, sẽ tạo nên một môi trường an toàn và yên ổn cho trẻ. Khi đứa trẻ thấy cha mẹ mình trân trọng nhau, chúng cũng sẽ cảm thấy chính mình được chấp nhận và được trân trọng hơn.
  2. Dành ra thời gian để ở bên con
    Cách người bố sử dụng thời gian như thế nào thể hiện điều gì là quan trọng với ông, dưới con mắt của người con. Nếu bạn luôn tỏ cho con thấy bạn quá bận rộn, con bạn sẽ cảm thấy mình không được quan tâm, coi trọng, bất kể bạn có nói thế nào đi nữa. Dành thời gian cho lũ trẻ luôn đồng nghĩa với việc bạn phải hy sinh một vài điều khác, nhưng điều đó là căn bản và tối cần thiết. Lũ trẻ lớn lên rất nhanh, những cơ hội một khi đã mất đi sẽ mất đi mãi mãi.
  3. Dành lấy quyền lắng nghe
    Thông thường một khi người bố nói chuyện với con, đều là những lúc chúng đã mắc lỗi lầm gì đó. Đó là lí do vì sao rất nhiều đứa trẻ cảm thấy sợ hãi khi mẹ chúng nói: “Bố con muốn nói chuyện với con đấy.” Hãy bắt đầu nói chuyện với con từ khi chúng con bé bỏng để rồi những chủ đề khó khăn hơn sẽ được giải quyết 1 cách đơn giản hơn khi con bạn lớn lên. Hãy dành thời gian, lắng nghe tất cả những ý tưởng cũng như những vấn đề của con.
  4. Phạt trẻ một cách yêu thương
    Tất cả những đứa trẻ đều cần sự chỉ bảo và đôi khi là nguyên tắc cứng rắn, nhưng không phải là để trừng phạt, mà là để đặt ra những giới hạn hợp lý. Hãy nhắc nhở con bạn về hậu quả có thể xảy ra từ những hành động của con, và dành cho con những phần thưởng ý nghĩa nếu chúng thể hiện như mong đợi. Những người cha nghiêm khắc một cách điềm tĩnh và công bằng chính là đang thể hiện tình yêu của mình dành cho con.
  5. Trở thành một hình mẫu tốt
    Những người cha chính là hình mẫu cho con mình bất kể họ có nhận ra hay không. Một cô gái nếu được lớn lên trong tình yêu thương của bố sẽ trường thành trong niềm tin và nhận thức rằng mình xứng đáng được tôn trọng như thế nào bởi các chàng trai, và cần phải tìm kiếm điều gì ở một người chồng. Những người bố có thể dạy cho con trai mình điều gì trong cuộc sống là quan trọng thông qua chính sự chân thành, trách nhiệm và đạo đức trong cách sống của mình. “Thế giới này là một sân khấu lớn…” và người bố đang đóng một trong những vai chính yếu nhất.
  6. Trở thành một người thầy
    Rất nhiều người bố nghĩ rằng việc dạy dỗ là công việc của người khác chứ không phải mình. Nhưng nếu một người bố dạy cho con mình biết đúng-sai, và khuyến khích con luôn làm hết sức mình, sẽ nhận được phần thưởng lớn lao khi nhận thấy con họ thường có những quyết định đúng đắn. Những người bố tốt dùng những ví dụ nhỏ hàng ngày để giúp con mình có được những bài học cơ bản về cuộc sống.
  7. Thường xuyên có những bữa cơm gia đình
    Cùng ăn với nhau (ăn sáng, ăn trưa, ăn tối….) là một phần quan trọng cho một cuộc sống gia đình hạnh phúc. Ngoài việc giúp giữ cấu trúc rõ ràng cho một ngày bận rộn, không để công việc chen lấn các phần khác của cuộc sống, những bữa ăn đó còn mang đến cho lũ trẻ cơ hội được nói về chúng, chúng đã làm gì, muốn làm gì. Đó là thời điểm tuyệt vời để người bố có thể lắng nghe và đưa ra những lời khuyên. Quan trọng nhất, đó là thời gian để cả gia đình có thể ở bên nhau mỗi ngày.
  8. Đọc sách cho con nghe
    Trong một thế giới mà truyền hình và internet thường chiếm trọn cuộc sống của lũ trẻ, việc những người bố có ý thức dành ra thời gian đọc sách cho con là rất quan trọng. Trẻ em học hỏi tốt nhất thông qua việc đọc, cũng như quan sát và lắng nghe. Hãy bắt đầu việc đọc sách cho con ngay từ khi chúng còn rất nhỏ. Khi chúng lớn hơn 1 chút, hãy khuyến khíchchúng tự đọc. Khiến sự yêu thích việc đọc trở thành một phần tự nhiên của con cái là một trong những cách tốt nhất để chắc chắn rằng chúng sẽ có một cuộc sống thành đạt cả trên góc độ con người và sự nghiệp.
  9. Thể hiện tình thương yêu
    Trẻ em cần có cảm giác an toàn khi biết rằng chúng được chấp nhận, chào đón, và yêu thương bởi gia đình. Những người lớn, đặc biệt là người bố, cần phải cảm thấy thoải mái khi, và mong muốn được, ôm hay vỗ về con họ. Thể hiện tình thương yêu mỗi ngày qua những hành động là cách tốt nhất để con bạn hiểu rằng bạn yêu chúng.
  10. Nhận thức rằng công việc của một người bố không bao giờ hoàn thành
    Ngay cả khi con cái đã trưởng thành, chúng vẫn hướng về người bố để tìm đến những lời khuyên và sự thông thái từ ông. Bất kể đó là việc nên học tiếp hay không, một công việc mới, hay một đám cưới tới gần, người bố luôn tiếp tục đóng một vai trò quan trọng trong cuộc sống của con cùng với việc chúng lớn lên, và có thể, tiến tới hôn nhân và xây dựng gia đình riêng của chúng.

No Comments on 10 cách để trở thành một ông bố TỐT HƠN

Tối ưu hệ thống để tăng performance cho Elasticsearch trên Centos 7 May 27, 2018

Sau bài hướng dẫn cài đặt và cấu hình cơ bản, chúng ta tiếp tục đi tới phần nâng cao để có 1 hệ thống Elasticsearch đáp ứng được performance tốt hơn, bài viết này cóp nhặt với nhiều nguồn khác nhau, hi vọng giúp bạn có thêm những cách tối ưu cho hệ thống đang chạy của bạn.
1. Tăng số lượng file descriptors lên 64K
vi /etc/security/limits.conf
elasticsearch – nofile 65536
elasticsearch – memlock unlimited
su – elasticsearch
ulimit -n
65536
ulimit -l
unlimited
2. Tăng virtual memory
Elasticsearch sử dụng thư mục mmapfs theo mặc định để lưu trữ các chỉ số của nó. Giới hạn hệ điều hành mặc định về số lượng mmap có thể quá thấp, điều này có thể dẫn đến các lỗi của bộ nhớ. Vì vậy ta có thể tăng số lượng lên bằng câu lệnh sau trên Centos 7.
sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
3. Tắt swap
Mặc định thì hệ điều hành Centos 7 để swappiness bằng 30, tuy nhiên để tối ưu cho Elasticsearch hoàn toàn không sử dụng swap nên chúng ta sẽ tắt nó đi.
sysctl vm.swappiness=0
vm.swappiness = 0
4. Tối ưu config/jvm.options
Chúng ta luôn set giá trị min và max JVM heap size bằng nhau, thường ở mức 1/2 tổng bộ nhớ RAM physical, tối đa không vượt quá 30.5GB

## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##

Cấu hình GC, log4j cũng ở trong config này, ( cái này expert quá nên mình chưa thử)
5. Cấu hình Elasticsearch 
vi config/elasticsearch.yml
Lock toàn bộ memory khi khởi động
bootstrap.mlockall: true

# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#

Một số cấu hình khác:
“indices.memory.index_buffer_size”: “30%”
“index.translog.flush_threshold_ops”: 50000
“index.refresh_interval”: “5s”
“index.store.type”: “mmapfs”
Trên đây là 1 số cấu hình cần được tối ưu để chạy Elasticsearch, hi vọng có thể giúp bạn lúc bắt đầu, tuy nhiên, có thể 1 số cấu hình không được chính xác và mang tính chủ quan, hi vọng được sự góp ý của các bạn.
 

1 Comment on Tối ưu hệ thống để tăng performance cho Elasticsearch trên Centos 7
Categories: Tài liệu

Hướng dẫn cài đặt và cấu hình Elasticsearch trên Centos 7

Giới thiệu
Elasticsearch là một phần mềm mã nguồn mở và miễn phí  của Elastic, dựa trên Apache Lucene, là platform được sử dụng cho việc phân phối tìm kiếm và phân tích dữ liệu trong thời gian thực, được sử dụng rộng rãi do tính dễ sử dụng, tính năng mạnh mẽ và khả năng mở rộng tốt, bạn có thể sử dụng các phương thức HTTP để giao tiếp qua RESTful để thao tác với dữ liệu, thân thiện với người sử dụng cũng như các nhà phát triển.
Elasticsearch được sử dụng rộng rãi cho các dự án cá nhân cũng như là search engine chính trong các công ty lớn.
Tuy có rất nhiều bài viết, tutorial đề cập tới việc hướng dẫn cài đặt cũng như cấu hình, nhưng hi vọng bài viết này sẽ cung cấp cho bạn 1 cách chi tiết và trọn vẹn nhất để thực hiện trên bản Centos 7 và Elasticsearch phiên bản mới nhất 6.2
Các bước cài đặt
1. Cài đặt Java 8
Do Elasticsearch được viết bằng Java nên bạn cần có 1 JRE để chạy nó, ở đây mình sử dụng JDK 8 bản update 171 mới nhất.
Link download:

wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz
tar -xvzf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171 /opt/

Cấu hình biến môi trường cho toàn bộ user:

vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
. /etc/profile

Verify:
java -version
java version “1.8.0_171”
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
2. Download và cài đặt Elasticsearch
 
Vào trang chủ https://www.elastic.co/downloads và download bản mới nhất hiện tại là 6.2.4

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
tar -xvzf elasticsearch-6.2.4.tar.gz
mv elasticsearch-6.2.4 /data/elastic/elasticsearch

Tạo user elasticsearch và thư mục /data/elatic/

adduser elasticsearch
chown -R elasticsearch. /data/elastic/
su – elasticsearch
cd /data/elastic/elasticsearch/

Cấu trúc thư mục như sau:

ls
bin lib logs NOTICE.txt README.textile
config LICENSE.txt modules plugins

3. Cấu hình Elasticsearch
Các file cấu hình cần chú ý:

ls config/
elasticsearch.yml jvm.options log4j2.properties

Bạn có thể sửa lại theo ý mình cho các file config này, nếu không cần thiết thì để nguyên và thực hiện sau trong phần tunning cho Elasticsearch.
Khởi chạy Elasticsearch

./bin/elasticsearch

Sample output:
[2018-05-28T02:56:03,739][INFO ][o.e.n.Node ] [] initializing …
[2018-05-28T02:56:03,846][INFO ][o.e.e.NodeEnvironment ] [zqsXYde] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [10.4gb], net total_space [17.4gb], types [rootfs]
[2018-05-28T02:56:03,846][INFO ][o.e.e.NodeEnvironment ] [zqsXYde] heap size [1007.3mb], compressed ordinary object pointers [true]
[2018-05-28T02:56:03,850][INFO ][o.e.n.Node ] node name [zqsXYde] derived from node ID [zqsXYdeEQ8ifax0sYq72gg]; set [node.name] to override
[2018-05-28T02:56:03,850][INFO ][o.e.n.Node ] version[6.2.4], pid[1624], build[ccec39f/2018-04-12T20:37:28.497551Z], OS[Linux/3.10.0-693.5.2.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_171/25.171-b11]
[2018-05-28T02:56:03,851][INFO ][o.e.n.Node ] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch.BOVwKawi, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Des.path.home=/data/elastic/elasticsearch, -Des.path.conf=/data/elastic/elasticsearch/config]
….
[2018-05-28T02:56:09,185][INFO ][o.e.t.TransportService ] [zqsXYde] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2018-05-28T02:56:09,200][WARN ][o.e.b.BootstrapChecks ] [zqsXYde] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2018-05-28T02:56:09,201][WARN ][o.e.b.BootstrapChecks ] [zqsXYde] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2018-05-28T02:56:12,290][INFO ][o.e.c.s.MasterService ] [zqsXYde] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {zqsXYde}{zqsXYdeEQ8ifax0sYq72gg}{3MVumgkjQGK04HXp82FPCA}{127.0.0.1}{127.0.0.1:9300}
[2018-05-28T02:56:12,311][INFO ][o.e.c.s.ClusterApplierService] [zqsXYde] new_master {zqsXYde}{zqsXYdeEQ8ifax0sYq72gg}{3MVumgkjQGK04HXp82FPCA}{127.0.0.1}{127.0.0.1:9300}, reason: apply cluster state (from master [master {zqsXYde}{zqsXYdeEQ8ifax0sYq72gg}{3MVumgkjQGK04HXp82FPCA}{127.0.0.1}{127.0.0.1:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2018-05-28T02:56:12,361][INFO ][o.e.g.GatewayService ] [zqsXYde] recovered [0] indices into cluster_state
[2018-05-28T02:56:12,368][INFO ][o.e.h.n.Netty4HttpServerTransport] [zqsXYde] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2018-05-28T02:56:12,368][INFO ][o.e.n.Node ] [zqsXYde] started
Trong output trên có warning những thứ cần phải tunning cho phù hợp, mình sẽ đề cập ở bài viết sau.
4. Kiểm tra hoạt động
Ctrl + Z để thoát và bg để chạy backgroud

^Z
[1]+ Stopped ./bin/elasticsearch
bg
[1]+ ./bin/elasticsearch &

Verify process đang chạy:

ps aux |grep elastic |grep java
elastic+ 1624 11.3 66.0 3626528 1233032 pts/0 Sl 02:55 0:20 /opt/jdk1.8.0_171/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.BOVwKawi -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/data/elastic/elasticsearch -Des.path.conf=/data/elastic/elasticsearch/config -cp /data/elastic/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch

Verify port đang lắng nghe

netstat -aonp |grep java |grep 9*00
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 1624/java off (0.00/0/0)
tcp6 0 0 ::1:9200 :::* LISTEN 1624/java off (0.00/0/0)
tcp6 0 0 127.0.0.1:9300 :::* LISTEN 1624/java off (0.00/0/0)
tcp6 0 0 ::1:9300 :::* LISTEN 1624/java off (0.00/0/0)

Bằng HTTP

curl -X GET ‘http://localhost:9200’
{
“name” : “zqsXYde”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “jvbM2A4XRhmYoDgD_tmzSg”,
“version” : {
“number” : “6.2.4”,
“build_hash” : “ccec39f”,
“build_date” : “2018-04-12T20:37:28.497551Z”,
“build_snapshot” : false,
“lucene_version” : “7.2.1”,
“minimum_wire_compatibility_version” : “5.6.0”,
“minimum_index_compatibility_version” : “5.0.0”
},
“tagline” : “You Know, for Search”
}

Testing:
Thử POST 1 document
curl -X POST -H ‘Content-Type: application/json’ ‘http://localhost:9200/chuyencuasys/elastic_note/1’ -d ‘{ “message”: “Hello World!” }’
[2018-05-28T03:04:24,379][INFO ][o.e.c.m.MetaDataCreateIndexService] [zqsXYde] [chuyencuasys] creating index, cause [auto(bulk api)], templates [], shards [5]/[1], mappings []
[2018-05-28T03:04:24,814][INFO ][o.e.c.m.MetaDataMappingService] [zqsXYde] [chuyencuasys/tpb7MoIpRSqLobimaUFVZg] create_mapping [elastic_note]
{“_index”:”chuyencuasys”,”_type”:”elastic_note”,”_id”:”1″,”_version”:1,”result”:”created”,”_shards”:{“total”:2,”successful”:1,”failed”:0},”_seq_no”:0,”_primary_term”:1}
Sau đó GET:
curl -X GET ‘http://localhost:9200/chuyencuasys/elastic_note/1’
{“_index”:”chuyencuasys”,”_type”:”elastic_note”,”_id”:”1″,”_version”:1,”found”:true,”_source”:{ “message”: “Hello World!” }}
View cho dễ nhìn hơn với pretty
curl -X GET ‘http://localhost:9200/chuyencuasys/elastic_note/1?pretty’
{
“_index” : “chuyencuasys”,
“_type” : “elastic_note”,
“_id” : “1”,
“_version” : 1,
“found” : true,
“_source” : {
“message” : “Hello World!”
}
}
Như vậy là chúng ta đã xong phần cơ bản với cài đặt và cấu hình Elasticsearch, rất đơn giản và dễ hiểu phải không nào? Phần tiếp theo mình sẽ viết thêm về tunning và cấu hình nâng cao, cũng như một số thành phần có liên quan để xây dựng 1 hệ sản phẩm Elastic.

No Comments on Hướng dẫn cài đặt và cấu hình Elasticsearch trên Centos 7

Tôi đã pass vị trí System Engineer tại Zalo như nào ? Part 3 May 26, 2018

Khó khăn mới bắt đầu ?

“Chặng đường nào trải bước trên hoa hồng bàn chân cũng thấm đau vì những mũi gai”
Series bài viết này cũng như một hồi kí mà tôi muốn nhắc mình phải cố gắng hơn thế cố gắng không ngừng nghỉ để phát triển mình hơn không được chùn bước với bất kì lí do gì .
Dạo gần đây bắt đầu công việc khi mới vào làm khá là nhiều và phải học nhiều thứ nên hôm nay mới có thời gian để lên đây viết vài lời tâm sự cùng anh em :))
Tiếp tục với câu chuyện ở Part2 khi mới bắt đầu tiếp xúc với linux …
Trước đó khoảng 1 năm sau khi sếp mình giao task nghiên cứu về mail ZIMBRA thì mình đã tiếp xúc với linux và có tham gia 1 số cộng đồng mã nguồn mở lên đó nghe ngóng tình hình rồi thấy ai làm gì hay hay thì mình cũng mày mò tự cài đặt những service đơn giản trên linux như DNS , DHCP , APACHE , NGINX , PHP , MYSQL …
Lúc bấy giờ thì chưa biết gì cả chỉ step by step search ở mạng rồi làm theo nhưng khi cài được 1 service nó chạy thì vui lắm cứ thế dần dần nó thành thói quen rồi khi có bug thì bắt đầu search hỏi rồi dần dần skill linux của mình cũng đỡ đỡ hơn rồi sau đó bắt đầu cài những service phức tạp hơn như NAGIOS , ZABBIX , REVERSE PROXY , HAPROXY …
Đặc biệt sau đó mình làm mail và ở đây là ZIMBRA mình tìm hiểu cái này cũng phải hơn 1 năm , khi làm mail ZIMBRA này mình quen rất nhiều anh em bạn bè tốt ở mọi miền họ đã giúp đỡ mình rất nhiều trong kỹ thuật cũng như là cuộc sống , mình rất biết ơn những người đã giúp đỡ mình trong những bước đi đầu đời bởi nếu không gặp được họ liệu rằng mình sẽ không thể đi nhanh và xa như vậy.
Việc làm một hệ thống mail rất phức tạp đặc biệt là làm sao để mail khi build không bị spam , không bị vào junk , hệ thống backup mailbox cũng như HA hệ thống … Mình đã biết khái niệm thế nào là SPF , DKIM , DRMAC , PTR cách gỡ spam , cách xử lí khi bị spam , thế nào là muilt server zimbra , HA , cluster hệ thống … những việc này tăng cho mình kinh nghiệm rất nhiều trong việc quản trị linux .
Vậy đó mình đã tiếp xúc với linux như vậy hãy cứ làm việc mà mình thích làm những cái nhỏ nhất rồi từ từ các bạn sẽ thấy những chuyện này chẳng nhỏ chút nào . Mình có nghe ai đó nói 1 câu rằng “Tìm cho mình một công việc yêu thích, và rồi bạn sẽ chẳng phải làm việc thêm bất cứ một ngày nào nữa.
Thôi lan man đến đây coi như là hồi kí sau này đọc lại tự cảm thấy mình đã cố gắng như nào Part sau mình sẽ viết cho các bạn mình đã chuẩn bị CV như nào gửi cho ZALO , rồi được gọi phỏng vấn và phỏng vấn với các anh làm việc ở ZALO như nào . Chào các bạn mình viết report cuối tuần đây , chúc các bạn cuối tuần vui vẻ .

No Comments on Tôi đã pass vị trí System Engineer tại Zalo như nào ? Part 3
Categories: Linh tinh