Does it mean the node associated with the block producer account is currently online?
is_active field is set manually, and it's a heuristic that is used to choose BPs that should build blocks next round. Those with
is_active == False are given a negative score when BPs are ordered by votes so they end up being ignored while inactive.
How does the EOS system determine which producers are active or not?
When an account registers as a producer using the
regproducer method, they are automatically considered active (
is_active == True). Similarly, when the
unregproducer method is called, the producer is deactivated (
is_active == False).
unregproducer requires the authority of the producer that is being deactivated, the
eosio.system contract can use
rmvproducer to deactivate producers if enough BPs sign to use the multisig
eosio account to send the action. The last point is particularly important because it enables proposals such as this one where BPs that cannot produce blocks are unregistered by the system, and then they can reregister later without losing their votes or blocking the network.
Side note: The terminology may be a bit confusing because people may often use "active BPs" to refer to the 21 BPs that are producing in a round (e.g. Dan's comment,) while the
is_active field has different semantics.