Bài đăng nổi bật

Redo log, undo log và binary log

Đây là ba loại log mà bạn đã từng nghe khi tiếp cận mysql. Trong các cơ sở dữ liệu quan hệ (RDBMS) khác, cũng sẽ có các thành phần có vai tr...

Thứ Bảy, 27 tháng 2, 2016

Quick setup haproxy and keepalived

Haproxy đóng vai trò như một reverse proxy thực hiện load balancer. Bản thân một haproxy thì không ấn định  high availabilty (HA) cho chính nó. Tính chất HA là ấn định cho cac backend server đằng sau nó. Nếu chỉ có một haproxy thì mô hình sẽ có một SPOF (Single Point Of Failure). Nó down thì cả hệ thống down theo. Để giải quyết, chúng ta  có thể thêm một haproxy để dự phòng (redundancy). Nhưng phương án đó lại phát sinh thêm vấn đề . Khi failover xảy ra client làm sao kết nối đến haproxy dự phòng. Tôi không thể gán cùng một IP lên hai haproxy được. IP conflict sẽ khiến mạng không ổn định. Tôi cũng không thể gán IP khác nhau cho mỗi haproxy được. Khi failover, tôi sẽ phải thông báo cho tất cả client về IP mới. Việc đó thật quá sức. Xem chừng lúc này chúng ta cần đến keepalived. Sử dụng keepalived sẽ cho phép tôi tạo ra một VIP - Virtual IP. Client sẽ kết nối đến haproxy qua VIP này. VIP này sẽ được keepalived luân chuyển sang haproxy dự phòng khi failover. Tất cả đều trong suốt với client. Client không biết được nó đang kết nối đến VIP, nó nghĩ nó đang kết nối trực tiếp đến một single backend thay vì một cluster backend nằm sau VIP. Client sẽ không biết đến real IP của proxy và IP của backend cũng như sự luân chuyển VIP này khi failover.

Q&A MySQL and Galera cluster

Các câu hỏi thường gặp trong mysql, galera cluster và các câu trả lời ngắn gọn.

xbstream: Can't create/write to file './ibdata1' galera

Đây là lỗi tôi gặp phải khi khởi động mariadb galera cluster cụm 3 node. Diễn biến là như này. Ban đầu tôi quên không cấu hình iptables giữa các server, tất nhiên khi đó các node joiner sẽ không thể đồng bộ data với donor để tham gia vào cluster. Tôi bèn stop iptables, nhưng sau đó tôi liên tục gặp thông báo "xbstream: Can't create/write to file './ibdata1' galera". Quái lạ, hay là trên joiner node có một file ibdata1 đó chưa được xóa, tôi tự nhủ. Di chuyển đến khu vực datadir của joiner tôi không thấy file nào tên là ibdata1 chỉ có sst_in_progress và grastate.dat Tại datadir của joiner, tôi bèn rm -rf * hi vọng sẽ xóa sạch các file cũ để làm mới khu vực này sau khi sst từ donor. Tiếp tục khởi động mysql trên joiner, tôi tiếp tục nhận được thông báo lỗi cũ...

Thứ Năm, 25 tháng 2, 2016

Kỹ thuật benchmark

Bạn khó có thể biết chính xác khả năng hoạt động server cho đến khi benchmark. Kết quả benchmark không chỉ tiết lộ ngưỡng hoạt động ở mức trần của server, của dịch vụ trên server mà còn giúp bạn loại trừ những sự cố tiềm ẩn. Ví dụ: Bạn có thể biết được disk có vấn đề khi kết quả benchmark cho tốc độ đo có chừng 53MB/s. Sẽ thật tai hại nếu sử dụng ổ cứng đó cho dịch vụ. Phát hiện và thay thế sớm sẽ bớt đau đớn hơn rất nhiều khi dịch vụ đã online.

Thứ Tư, 24 tháng 2, 2016

Raid on chip và Raid Card

Khi khai thác thông tin một server, tôi nhận thấy có sự khác biệt sau trong kết quả.

Cài đặt MegaCLI

MegaCLI là một công cụ kiểm tra tình trạng raid của LSI, nay đã là Avagotech. Và để công cụ này hoạt động server của bạn phải dùng MegaRAID, sản phẩm của LSI.

Thứ Ba, 23 tháng 2, 2016

Tìm hiểu về RAID

RAID - Viết tắt của Redundancy Array of Inexpensive Disks, theo cách gọi phổ biến thì là Redundancy Array of Independent Disks. Đó là một công nghệ storage cho phép gom nhiều physical disk thành một logical unit. Bằng cách này, RAID nâng cao throughput do data được đẩy vào nhiều disk. Về dung lượng data cũng được nâng cao, khả năng fault-tolerance của disk cũng được cải thiện khi mà các data bị mất trên một disk có thể khôi phục qua quá trình rebuilding từ các disk còn lại trong array. Tùy vào RAID level được sử dụng mà các ưu điểm trên có thể xuất hiện một phần hoặc tất cả. Chúng ta sẽ điểm qua các RAID level thông dụng nhất: RAID-0, RAID-1, RAID-5, RAID-6, RAID-10 và RAID-01.

Kỹ thuật kiểm tra sức khỏe của disk trên hệ thống

Bài viết sẽ liệt kê một số công cụ kiểm tra sức khỏe cho ổ đĩa và các thông số mà người quản trị viên cần chú ý.

Thứ Hai, 22 tháng 2, 2016

Quick setup Github using https with two-factor authentication

Github là một kho lưu trữ và chia sẻ code tuyệt vời. Khác với Gitlab, một phiên bản tương tự của Github, bạn không cần setup cả một hệ thống hoàn chỉnh từ đầu. Github đã lo cho bạn hết rồi. Bạn chỉ cần đăng ký tài khoản và cấu hình chút ít để sử dụng. Vì mọi lưu trữ mặc định được public hết (nếu muốn private, bạn phải trả phí), hơn nữa mọi lưu trữ nằm trong Github server nên các công ty không sử dụng Github để host code mà thường dựng nguyên một hệ thống tương tự dùng Gitlab. Nhưng github vẫn là nơi không thể chê được cho các dự án cộng đồng và cá nhân.

Thứ Năm, 18 tháng 2, 2016

Thứ Tư, 17 tháng 2, 2016

Não người có hỗ trợ multithreading hay multitasking ?

Trước hết, hai khái niệm này được mượn từ trong lĩnh vực khoa học máy tính áp dụng lên hành vi não người. Bài viết này là kết quả của sự tìm hiểu liệu rằng theo một cách tự nhiên, não người có thích hợp với làm nhiều việc cùng lúc.

Thứ Bảy, 13 tháng 2, 2016

Thám sát closure trong javascript

Trong bài viết này, tôi chỉ đề cập đến khái niệm closure trong javascript. Với các ngôn ngữ khác thì khái niệm này có thể khác nhau.

Thứ Sáu, 5 tháng 2, 2016

Nghịch tmux

Tmux - Một phần mềm nho nhỏ nhưng cực kỳ hữu ích. Lợi ích lớn nhất mà tmux đem lại là cho phép bạn tái truy cập lại một session sau khi kết nối bị mất. Giả sử tình huống như sau: Bạn đang thực hiện một long running action như import file sql có dung lượng lớn, rsync, scp data... Và đột nhiên kết nối ssh bị mất do network nhà bạn gặp trục trặc. Tiến trình import, rsync, scp vẫn hoạt động nhưng bạn không thể thấy nó đang diễn ra như thế nào. Làm cách nào để tái truy cập session đã mất. Tmux chính là thiên thần cứu rỗi bạn trong tình huống đó. Xin bạn chú ý, thiên thần này chỉ giúp bạn nếu bạn nhờ cậy trước khi thực hiện long running action. Nhưng thế cũng là tốt lắm rồi :D

Buffer và cache

Đây là hai khái niệm không mới nhưng lại rất dễ gây nhầm lẫn.

Thu thập thông tin cơ bản về một server

Nếu là một system admin, hẳn bạn đã không ít lần tiếp nhận server. Đó giống như lần đầu đặt chân vào một căn nhà mà bạn chưa từng đặt chân. Một cách tự nhiên và cũng là cần thiết khi bạn tìm hiểu về căn nhà đó. Một căn nhà để ở ngay thì bạn không cần tìm hiểu mà cứ nhảy vô vào dùng thì cũng chẳng sao nhưng với một server thì hành động đó lại có thể xem là liều lĩnh. Một server rốt cục cũng là một phương tiện để chạy application trên đó. Application hoạt động tốt hay không cũng nhờ công lớn sự đáp ứng của hardware bên dưới. Không hiểu các thông số hardware của server sẽ là một thiếu sót lớn. Và mọi hiểu biết đều khởi sự từ các bước chân đầu tiên. Biết cách lấy thông tin về server là bước cơ bản mà mọi người đều đi qua.

Thứ Năm, 4 tháng 2, 2016

Redo log, undo log và binary log

Đây là ba loại log mà bạn đã từng nghe khi tiếp cận mysql. Trong các cơ sở dữ liệu quan hệ (RDBMS) khác, cũng sẽ có các thành phần có vai trò tương tự ba loại log trên. Mỗi loại log lại có những vai trò khác nhau nên được mysql sử dụng trong các tình huống khác nhau.

Vị trí galera config trong mysql galera cluster và mariadb galera cluster

Gần đây khi config một số bản galera cluster khác nhau tôi phát hiện thấy phần config galera có vị trí khác biệt so với các phiên bản hiện tại. Như các bạn biết, với các bản galera cluster, chúng ta thường cấu hình các thông số wsrep trong section [galera]. Nhưng với bản mysql galera cluster 5.6 hay mariadb galera cluster 10.0.12 tôi đã thử qua thì vị trí các config này lại nằm ở một nơi khác

Thứ Tư, 3 tháng 2, 2016

Apply các giá trị max_execution_time, max_input_time và memory_limit trong php.ini

Một số code php thực hiện quá lâu, vượt quá giá trị timeout mặc định hoặc tiêu tốn quá lượng memory mặc định mà php gán cho một script nên tự kết thúc. Thường thì các giá trị timeout, memory này của php phù hợp với đa số với ứng dụng. Nhưng đôi khi một số logic đặc thù cần phải thực hiện trong một khoảng thời gian nhất định vượt quá các giá trị mặc định này. Đó chính là lúc bạn cần thay đổi các giá trị này.

Fix lỗi: I/O error reading the header from the binary log, errno=175, io cache code=0

Tôi gặp lỗi này khi thử add một node vào mariadb galera cluster bản 10.0.12. Lỗi này liên quan đến binlog. Output đầy đủ của lỗi như sau:

Thứ Bảy, 30 tháng 1, 2016

Cấu hình bắt buộc để chạy Maria Galera cluster

Tại thời điểm tôi viết bài này, MariaDB đã release phiên bản 10.1.x-galera stable. Bản galera cluster này được MariaDB build dựa trên dòng phiên bản 10.0.x-galera stable. Các thông số cấu hình bắt buộc cho galera hầu như không thay đổi. Các thông số này đều được chú thích rõ trong file config.

Giới thiệu galera cluster

Galera cluster là một giải pháp multi master cho database. Sử dụng galera cluster, application có thể read/write trên bất cứ node nào. Một node có thể được thêm vào cluster cũng như gỡ ra khỏi cluster mà không có downtime dịch vụ, cách thức cũng đơn giản.

Could not open mysql.plugin table. Some plugins may be not loaded

Đây là lỗi thỉnh thoảng tôi gặp khi nhận deploy database. Căn cứ vào thông báo lỗi, service không open được mysql.plugin table - Đây là một system table. Những lỗi liên quan đến system table thì thông thường tôi sẽ xóa bỏ toàn bộ rồi install lại system tables. Đặt trong tình huống của tôi là deploy một db mới, user db chưa có nên cách giải quyết này hoàn toàn khả thi.

Thứ Sáu, 29 tháng 1, 2016

No package MariaDB-Galera-server available

Hôm nay, khi tôi thử cài đặt MariaDB galera trên repo của MariaDB thì nhận được thông báo “No package MariaDB-Galera-server available.”

Thứ Hai, 25 tháng 1, 2016

Một số thuật ngữ liên quan đến virtual switch

Trong bài viết này, chúng ta sẽ điểm qua một số thuật ngữ hay dùng: uplink, upstream switch, NIC, virtual machine NIC, virtual port...

Virtual switch vs physical switch

Virtual switch (vSwitch) là phần mềm nằm trong hypervisor của vmware để xử lý các traffic network cho các virtual machine.

So sánh cat5, cat5e, cat6, cat6a

Trông có vẻ mọi ethernet cable đều giống nhau nhưng thực tế là không phải vậy. Bề ngoài không bao giờ cho chúng ta thấy hết bản chất sự vật. Thực tế, chúng ta có tất cả 4 loại ethernet cable: cat5, cat5e, cat6, cat6a (cat là viết tắt của từ category, nghĩa là chủng loại). Mỗi loại có những khác biệt về đặc tính kéo theo giá cả khác nhau. Nắm được những khác biệt sẽ giúp ta rất nhiều trong việc triển khai hạ tầng mạng nếu không bạn sẽ phải khóc. Tôi nói thật đấy.

Thứ Sáu, 22 tháng 1, 2016

Giới thiệu Openstack

Openstack là một Iaas cloud computing project. Bên cạnh sự hỗ trợ tích cực từ cộng đồng, openstack cũng được hỗ trợ bởi nhiều công ty tên tuổi như redhat, ibm, vmware… Openstack là giải pháp cho public cloud và private cloud với quy mô đa dạng. Được thiết kế thành các component, trao đổi với nhau qua các API nên openstack rất linh động, một component có thể được thay thế mà không ảnh hưởng đến các component còn lại.

Về IaaS, PaaS, SaaS trong cloud computing

Như đã nói trong bài giới thiệu cloud, cloud có ba mức: Iaas, Paas, Saas.

Thứ Tư, 20 tháng 1, 2016

QPI - Quick Path Interconnect

Trước khi nói đến QPI, chúng ta sẽ điểm lại một số công nghệ lịch sử.

Front side bus

Front side bus, đây là một bus giao tiếp dùng cho các chip intel thời gian từ năm 1990 đến những năm 2000. Đối thủ Front Side Bus là EV6 của AMD chip. Cả hai đều có chức năng vận chuyển data giữa CPU và memory controller (còn có tên gọi khác là northbridge, chip cầu bắc)

Chủ Nhật, 17 tháng 1, 2016

Virtualization

Lưu ý của người viết: Bài viết này hướng đến virtualization của vendor VMWare. Các vendor khác nhau sẽ có các kỹ thuật và hướng tiếp cận khác nhau.


Virtualization là gì


Động lực của virtualization: Là chia sẻ tài nguyên của một physical machine hiệu quả cho tất cả các user. Mỗi user sẽ có một environment độc lập. User này không thể nhìn thấy môi trường của user khác. User sẽ tưởng rằng nó đang hoàn toàn sở hữu physical machine. Nhưng thực ra nó chỉ thấy virtual machine mà nó được cấp.

Thứ Bảy, 16 tháng 1, 2016

10.000 giờ để thành thạo bất cứ thứ gì ?

Ở đây tôi nói đến ở góc độ chuyên gia, không phải góc độ làm được. Bạn đâu cần 10.000 giờ để ném rổ vào bóng. Tôi nhớ hồi tôi học đại học, mỗi tuần chỉ ném rổ một buổi vài tiếng là qua. Nhưng để ném rổ phát nào trúng phát đó thì không thể hời hợt vậy được. Nguyên tắc này đã được đề cập bởi nhiều tác giả, vận động viên rồi. Tôi lần đầu được biết đến nguyên tắc này qua bài viết: “Tự học lập trình trong 10 năm” của Peter Norvig. Nguyên tắc này cũng được khẳng định bởi Malcolm Gladwell, một nhà báo người Canada. Liệu có thể rút ngắn hơn quãng thời gian này. Tôi chưa thấy ai chứng minh nên chỉ có cách bạn chạy nhanh hơn để hoàn thành 10.000 giờ

Thứ Sáu, 15 tháng 1, 2016

Đam mê không là gì ?

Đam mê, một chủ đề không mới nhưng chẳng bao giờ cũ. Nếu tìm kiếm từ “đam mê” bạn sẽ có hơn 3 triệu kết quả, còn nếu tìm kiếm từ "passion" bạn sẽ có 626 triệu kết quả.  Cụm từ ám ảnh đầy mê hoặc nhưng thực sự rất bí ẩn. Tôi tìm đam mê qua viêc đọc nhiều bài viết về đam mê nhưng sau đó tôi nhận ra đây là một trạng thái tinh thần không thể được biết đến qua việc đọc.

Intel Smart Cache

Như đã nói trong bài viết về x86, x64 thì bên trong CPU được thiết kế cache để giảm việc truy xuất data từ CPU vào memory. Công nghệ cache trong CPU được phát triển bởi Intel có tên là smart cache. Cache trong CPU có nhiều level, thông thường sẽ có ba level. Smart cache sẽ là lớp cache cuối cùng của CPU đóng vai trò một sharing cache.

Thứ Năm, 14 tháng 1, 2016

x86, x64 nghĩa là gì ?

Đây là thông số rất quen thuộc. Trong phần lớn các gói phần mềm bạn tải về sẽ thường có ký hiệu x86 hoặc x64. Một số bản phân phối windows cũng được đánh dấu x86 hoặc x64. Vậy thì ý nghĩa của các ký hiệu này là gì ?

x86 và x64

x86 là tên một tập lệnh chỉ dẫn của CPU. Tập lệnh này được sử dụng lần đầu cho các dòng CPU 8086, các CPU kế nhiệm 8086 cũng vẫn giữ đuôi 86. Đây là lý do lịch sử khiến tập lệnh này có tên là x86. Tập lệnh này áp dụng cho các CPU 32 bits. Đối thủ của x86 là ARMv7.

x64 cũng là phiên bản 64 bits của tập lệnh x86 kể trên. Tập lệnh này còn có nhiều tên gọi khác nhau như x86_64 trong apple , amd64 trong các hệ thống nhân linux, ia-32e hay EMT64 trong intel. Đối thủ của x64 là ARMv8.

Thứ Tư, 13 tháng 1, 2016

Giới thiệu về cloud computing

Cloud computing giải quyết vấn đề gì ?

Các doanh nghiệp thay vì phải tự đầu tư hệ thống hạ tầng và phần mềm quản lý thì nay có thể thuê lại từ các đơn vị cung cấp cloud. Bản chất, cloud là một share resource. Resource ở đây có thể là infrastructure như network, server, storage, platform như web, database, software như các phần mềm CRM, thương mại điện tử…

Ngoài ra cloud còn cung cấp hạ tầng và năng lực tính toán trong viêc lưu trữ, xử lý big data. 

Thứ Tư, 6 tháng 1, 2016

Một số ngộ nhận về linux

Đối với người dùng phổ thông, linux là một cái gì đó rất lạ lẫm. Đi kèm với sự lạ lẫm là không ít ngộ nhận. Dưới đây là một số ngộ nhận phổ biến nhất.

Tại sao linux lại an toàn hơn so với windows ?

Đây là một câu hỏi mà hầu như bất cứ ai khi chuyển từ windows sang linux đều tự hỏi. Câu hỏi này nhắm đến đa số người dùng nên chúng ta sẽ chỉ xét người dùng thông thường, có ít kinh nghiệm khi tiếp cận dòng desktop trên cả hai hệ điều hành. Ở đây, tôi có ba lý do để ủng hộ tuyên bố trên.

Thứ Sáu, 1 tháng 1, 2016

Các lệnh linux hay dùng

Một tổng kết nho nhỏ để tham chiếu cho bản thân người viết:

1. Giải nén file

File có đuôi .tar.gz
tar xvzf file.tar.gz

File có đuôi .tar.xz hoặc .tar
tar xvf file.tar.xz

Lưu ý: Mọi lệnh liên quan đến nén hay giải nén đều gây hao tổn CPU bởi vì máy tính cần thực hiện tính toán rất nhiều khi nén/giải nén đặc biệt với các file có kích cỡ quá lớn.